![]() |
Datenbank: SQL • Version: - • Zugriff über: ADO
Meherer Spalten glechzeitig anzeigen
Hallo Forum,
Ich programmiere momentan ein Projekt, in dem zur Laufzeit zwei ADO-Connections erstellt werden, deren Daten dann mit jeweils einem Query in jeweils ein DBGrid geschrieben werden. Durch meinen SQL Code werden 3 Spalten aus den WErten erstellt, jedoch zeigt mir das DBGrid immer nur Eine an. Ich kann zwar per Scrollbar zur nächsten wechseln, aber ich krieg es nicht hin alle auf einmal darzustellen. Hier im Forum hab ich lieder auch noch keine Antwort gefunden, also hoffe ich auf Hilfe |
AW: Meherer Spalten glechzeitig anzeigen
Falls ich Dich richtig verstanden habe: schau mal
![]() |
AW: Meherer Spalten glechzeitig anzeigen
hmm... damit verändern sich die Tabellen leider auch nicht :/
|
AW: Meherer Spalten glechzeitig anzeigen
Wie, Tabellen? Was genau soll denn erreicht werden?
|
AW: Meherer Spalten glechzeitig anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
2 Datenbanken werden in jeweils eine Tabelle geschrieben und später dann vergliechen und die Unterschiede ausgebessert. Das klappt auch alles, nur eben nicht die Darstellung der Tabelle, weil mir nur jeweils eine Spalte angzeigt wird. Ich kann zwar von Spalte zu Spalte wechseln, aber ich möchte gerne alle Spalten gleichzeitig in der Tabelle sehen...
Habe mal einen Screenshot angehängt wie es momentan aussieht... |
AW: Meherer Spalten glechzeitig anzeigen
Jepp, das ist die zu große Spaltenbreite. Der verlinkte Artikel befasst sich doch genau damit. Zur Not kannst Du die Spaltenbreite aber auch selbst festlegen.
|
AW: Meherer Spalten glechzeitig anzeigen
Ich sehe endich Licht am Ende des Tunnels :)
Der Quellcode von deinem Link funktioniert zwar nicht wie gewünscht, aber ich hab daraus einfach folgendes gebaut, was funktioniert:
Delphi-Quellcode:
dankeschön :thumb:
for i := 0 to dbgMaster.Columns.Count -1 do
begin Spalte := dbgMaster.Columns[i]; Spalte.Width := Round(dbgMaster.Width/3); //3 wegen 3 vorhandenen Spalten end; for i := 0 to dbgSlave.Columns.Count -1 do begin Spalte := dbgSlave.Columns[i]; Spalte.Width := Round(dbgSlave.Width/3); end; |
AW: Meherer Spalten glechzeitig anzeigen
Evtl. auch so (ungetestet):
Delphi-Quellcode:
procedure ResizeColumnsEqually(Grid: TDBGrid);
var i: integer; begin if Assigned(Grid) then for i := 0 to Grid.Columns.Count - 1 do Grid.Columns[i].Width := Grid.ClientWidth div Grid.Columns.Count; end; |
AW: Meherer Spalten glechzeitig anzeigen
das funktioniert auch bestens :thumb:
|
AW: Meherer Spalten glechzeitig anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
Kaum ist das erste Problem gelöst, habe ich schon wieder ein neues :(
Jetzt soll ich das Programm noch so umschreiben, dass die beiden Tabellen beim Aufruf direkt verglichen werden und bei Unterschieden in der Spalte "Description" sollen die jeweiligen Zeilen in der Slave-Tabelle farbig markiert werden. Ich möchte das folgender Maßen machen: Ich habe in der Slave ein berechnendes Feld eingefügt, welches den Description Wert der Slave-Tabelle, mit dem Description Wert der Master-Tabelle vergleicht. Sind die werte gleich wird keine Farbe gesetzt(wert = 0), ist in der Master kein wert, dann soll der Slave wertgelöscht werden und die Zeile rot markiert werden(wert = 2), soll ein Text in der Slave hinzugefügt werden oder geändert werden soll die Zeile gelb markiert werden(wert = 1). In der Prozedure dbgSlaveDrawColumnCell wird dann je nach Wert die richtige Farbe gesetzt, was auch funktioniert. Jedoch gibt es schwierigkeiten bei dem Calcfields... Mein bisheriger Quelltext: (mein berechnendes Feld heißt: QrySlaveVeraendert)
Delphi-Quellcode:
Angehängt ist ein Screenshot meines Programmes nach Ausführen der Prozedur... wie zu sehen ist, bekommt er für die Master-Tabelle nicht die richtigen Werte. Falls ein Wert in der Slave vorhanden ist, wird dieser rot markiert, soll also gelöscht werden, obwohl in der Master Tabelle ein Wert vorhanden ist.
procedure TFMain.QrySlaveCalcFields(DataSet: TDataSet);
begin if ersterDurchgang = 0 then begin Inc(ersterDurchgang); QryMaster.First; QrySlave.First; end; if QryMaster.FieldByName('Description').Value <> QrySlave.FieldByName('Description').Value then begin if QryMaster.FieldByName('Description').Value = '' then begin QrySlaveVeraendert.Value := 2; end else begin QrySlaveVeraendert.Value := 1; end; end else begin QrySlaveVeraendert.Value := 0; end; if (QryMaster.Eof = false) and (QrySlave.Eof = false) then begin QryMaster.Next; QrySlave.Next; end end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz