Entwickler-Ecke

Datenbanken - Tabellen verknüpfen mit SQL


Tabakbrummel - Do 16.03.06 13:04
Titel: Tabellen verknüpfen mit SQL
Hallo Delphianer

Ich habe da ein Problem beim verküpfen von zwei Tabellen mit der Query.
Es funktioniert einfach nicht, was mache ich hier falsch?



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm2.Table1AfterInsert(DataSet: TDataSet);
var s : string;
begin
  s := 'SELECT adrid, adressid FROM firsttable, adress WHERE firsttable.adrid =        adress.adressid ';
  query1.close;
  query1.sql.Text := s;
  query1.ExecSQL;
end;


MfG
Tabakbrummel


mkinzler - Do 16.03.06 13:12

Bei einem select-Query mußt du statt .ExecSql .Open aufrufen.


Tabakbrummel - Do 16.03.06 13:33

Hallo mkinzler

Erst mal vielen Dank für deine Antwort.
Funktioniert drotzdem nicht. In der DBGrid wird nur eine Tabelle angezeigt.

MfG
Tabakbrummel


mkinzler - Do 16.03.06 13:40

hast du das Grid mit dem Query verknüpft?
Hast du im ColumnEditor bereits Spalten angelegt? Wenn ja, mußt du die hinzugekommenen Spalten anlegen oder alle löschen.


Tabakbrummel - Do 16.03.06 13:50

Hallo mkinzler

Ich habe die jetzt Query mit der Grid jetzt zeigt er beide Tabellen an, aber wenn man was
über der DBEdit eingibt zeigt die grid es nicht an.

MfG
Tabakbrummel


mkinzler - Do 16.03.06 14:05

Wenn der Query aktiv ist, mußt du ihn mit Close schließen und mit Open wieder zu öffen, oder .Resync austesten.
BTW Ich würde sie Zuweisen des Abfragestrings nicht in der Ereignisroutine setzten sondern fest mit dem Query verknüpfen.


Tabakbrummel - Do 16.03.06 19:39

Hallo

Das klapp alles bei mir nicht. Und das ist erst mein zweiter Tag wo ich mich mit SQL beschäftige.

MfG
Tabakbrummel


jaevencooler - Do 16.03.06 19:54

Moin, Moin,



user profile iconTabakbrummel hat folgendes geschrieben:
Hallo mkinzler

Ich habe die jetzt Query mit der Grid jetzt zeigt er beide Tabellen an, aber wenn man was
über der DBEdit eingibt zeigt die grid es nicht an.

MfG
Tabakbrummel


eine Datenmenge die aus einem Join besteht ist nicht updable !

Du kannst eine Datenmenge die aus zwei verknüpften Tabellen besteht
nicht bearbeiten, Du musst schon die Datenmenge über eine zweite Query
einzeln aufrufen, ändern und speichern, danach die die Ergebnismenge erneut aufrufen
mit Close & Open, Resync, Refresh etc, et voila.

Beste Grüße
Michael


Tabakbrummel - Do 16.03.06 20:05

Hallo

Und wie könnte ich es denn machen. Könnte jemand ewentuel ein code beispiel schreiben.

MfG
Tabakbrummel

[/Edit]


MSCH - Do 16.03.06 20:50

Zitat:
Datenmenge die aus einem Join besteht ist nicht updable !

grummel grummel,
hmmm, SQL-Server2005 resp. Express kann das, sofern es eindeutige ID's gibt.


grez
msch


mkinzler - Do 16.03.06 20:59

Tabakbrummel hat folgendes geschrieben:
Und wie könnte ich es denn machen. Könnte jemand ewentuel ein code beispiel schreiben.

Einfache weitere Querykomponente auf Form legen und einrichten. SQL-Eigenschaft derart setzen:
update firsttable set <feld1>= :feld1, <feld2>= :feld2 where adrid = :adrid; und synchron für dir adress-Tabelle.

zum Ändern füllst du nun die Parameter:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
 
query2.ParamByName('feld1').value := <wert1>;
query2.ParamByName('feld2').value := <wert2>;
query2.ParamByName('adrid').value := query1.FieldByName('adrid').Value;
query2.ExecSql;
query1.Refresh;


Delete - Do 16.03.06 22:54

hallo,

du zeigst ja auch nur die eindeutigen felder ann... wenn du mehr felder anzeigen willst, musst sie auch in deiner projektion angeben... beispiel....



SQL-Anweisung
1:
2:
3:
select a.name, b.vorname, a.alter, b.wohnort 
  from adresse a, adresse1 b 
 where a.id = b.id;