Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid.Field.Value mit Daten einer Tabelle vergleichen? (https://www.delphipraxis.net/69995-dbgrid-field-value-mit-daten-einer-tabelle-vergleichen.html)

Loki77 23. Mai 2006 11:55

Datenbank: Paradox • Version: 7 • Zugriff über: query, Table

DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Hallo!
Mal wieder was zum Thema DBGrid von mir :stupid:
Ist es möglich den Feld-Wert einer selektierten DBGrid-Zeile mit dem Feld-Wert einer "anderen" Tabelle
zu vergleichen?
Also sowas wie
Delphi-Quellcode:
if DBgrid.Columns[0].Field.Value = Table.FieldByName('FeldName').AsInteger
Oder kann man das anders realisieren?
Vielen Dank,
Philipp

s-off 23. Mai 2006 12:02

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Hallo,

warum sollte das nicht funktionieren? Du fragst doch einfach nut zwei Werte ab, die Du miteinander vergleichst.

Loki77 23. Mai 2006 12:07

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Wenn ich es so mache hängt sich mein Prog UND die IDE auf.....
:gruebel:
Philipp

Loki77 23. Mai 2006 12:26

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Das Aufhängen hab ich jetzt beseitig, der Vergleich findet aber nur für einen Eintrag statt,
wenn ich einen zweiten (eingetragenen) anklicke passiert nichts...

s-off 23. Mai 2006 13:00

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Zeig doch mal ein bissel Code

Angel4585 23. Mai 2006 13:03

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
warum nimmst du nicht
Delphi-Quellcode:
DBGrid.Datasource.Dataset.FieldByName('Feldname').AsString=hm...
Was bezweckst du eigentlich damit? *mal so ganz dumm frag*

Loki77 23. Mai 2006 13:46

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Ich möchte feststellen ob ein gewisser Eintrag in einer Tabelle existiert.
Dies soll geschehen wenn der Anwender auf eine Zeile im DBGrid klickt.
Beide haben den gleichen Key (FieldByName/Column[0]).

Angel4585 23. Mai 2006 13:55

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
und warum dann das DBGrid? Das ist doch nur die Anzeige für die Tabelle..

nimm doch gleich
Delphi-Quellcode:
if Tabelle1.FieldByName(Feld).AsString = Tabelle2.FieldByName(Feld).AsString then
  schiessdichtod
also wenn du im DBGrid auf einen Eintrag klickst werden Ereignisse der Tabelle ausgeführt wie z.B. AfterScroll oder BeforeScroll oder so

Loki77 23. Mai 2006 13:57

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Ok, war vielleicht ´n bisschen unklar, aber die Daten des DBGrid sind keine
Tabelle sondern die Ausgabe einer SQL-Abfrage aus mehreren Tabellen.
Und jetzt will ich prüfen ob dieses Key-Feld auch in meiner Tabelle existiert.

Angel4585 23. Mai 2006 14:11

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Um Daten in einem DBGrid anzuzeigen musst du doch irgendwo eine Tabelle haben oder?
es ist doch völlig egal ob die Daten dieser Tabelle durch SQL oder sonst wie ausgelesen werden. In dem Moment wo da Daten drin sind, kannst du über die FieldByName Eigenschaft darauf zugreifen.

Oder wenn du keine festen Spaltennamen hast auf über Fields[(0-(x-1))].

Auch wenn das eine eine Query ist, schau dir doch einfach mal an ob deine Query diese FieldByName Eigenschaft besitzt :zwinker:

Loki77 23. Mai 2006 14:27

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Also mal zur Erklärung:
Ich erstelle im DBGrid einen Datensatz durch eine SQL-Abfrage mehrerer Tabelle.
Wenn der Anwender auf eine Zeile des DBGrid doppel-klickt werden diese Daten in eine Tabelle
geschrieben.
Nun möchte ich beim nächsten mal dem Anwender zeigen dass der Datensatz schon existiert wenn
er "einfach" darauf klickt.
Also muss ich prüfen ob der Wert in DBGrid.Column[0] bereits in meiner Tabelle existiert.

Angel4585 23. Mai 2006 15:19

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
du erstellt in das DBGrid mehrere Tabellen durch ne SQL-Abfrage? :gruebel: kannst du mal den Code dazu posten? das würd mich jetz ma interesseieren a)wie du das machst und b) ob ich einfach nur aufm Schlauch steh.

mkinzler 23. Mai 2006 18:49

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Wenn du eine Abfrage über mehrere tabellen hast kannst du trotzdem mit
Delphi-Quellcode:
Query.FieldByName(<feldname>).Value
drauf zugreifen.

Angel4585 24. Mai 2006 09:27

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Zitat:

Zitat von mkinzler
Wenn du eine Abfrage über mehrere tabellen hast kannst du trotzdem mit
Delphi-Quellcode:
Query.FieldByName(<feldname>).Value
drauf zugreifen.

Ich weis jetz nich ob das bei Paradox auch so ist, aber wenn ich mehrere Tabellen über ein Join verknüpfe und in jeder der Tabellen z.B. das Feld "ID" drin ist, wird daraus - zumindest bei MySQL - "ID", "ID_1", "ID_2" ... also falls das der Fall ist bissi auf sowas achten :zwinker:

Loki77 24. Mai 2006 09:30

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Zitat:

du erstellt in das DBGrid mehrere Tabellen durch ne SQL-Abfrage?
Nein,Ich erstelle aus mehreren Tabellen (join) einen Datensatz.
Zitat:

Ich erstelle im DBGrid einen Datensatz durch eine SQL-Abfrage mehrerer Tabelle.
Der Vergleich funktioniert auch, aber nur für den ersten eintrag meiner Vergleichstabelle.
Hab schon ´ne menge Möglichkeiten durch diese Datensätze zu durchlaufen, aber
es funktioniert nicht so wie ich will....

Loki77 24. Mai 2006 10:03

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Hallo!
Hier mal ´n bisschen Code:
Delphi-Quellcode:
procedure TForm1.DBGrid6ColEnter(Sender: TObject);
var
i : integer;
begin
  SpeedButton3.Enabled := true;
  SpeedButton4.Enabled := true;
  tblCheck.First;
  while not tblCheck.eof do
  begin
    if tblCheck.FindKey([DBGrid6.Columns[0].Field.Value]) then
      Label10.Color := clGreen
    else
      Label10.Color := clMaroon;
    tblCheck.next;
  end;
Wenn ich einen zweiten Datensatz anklicke der in meiner Vergleichs-Tabelle steht
hängts sich das Prog (in ner Schleife?) auf.

marabu 24. Mai 2006 10:18

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Hallo Philipp,

das wird damit zusammenhängen, dass deine Prüfroutine zu häufig und überlappend aufgerufen wird. Nimm die Prüftabelle doch in deinen Join auf und wenn du willst färbe gleich die ganze Zeile im Ereignis OnDrawColumnCell(). Nach Übernahme eines Schlüssels in die Tabelle durch DblClick musst du dann nur deinen Join erneuern.

Grüße vom marabu

Loki77 24. Mai 2006 10:24

Re: DBGrid.Field.Value mit Daten einer Tabelle vergleichen?
 
Klingt nach ´ner guten Idee!
Werd´mich mal daranmachen und es versuchen.
Vielen Dank, Philipp


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:27 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 by Thomas Breitkreuz