Autor Beitrag
Gwaineg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 55

WIN XP Prof
D7 Ent
BeitragVerfasst: Do 18.08.05 14:23 
ich schreibe ein Programm zum synchronisieren einer Paradox-DB(local) mit einer MYSql-DB(online)

dafür brauch ich einen Befehl der mir den PrimaryKey der Tabellen angibt, also den Attributnamen des PrimaryKeys
ob das jetzt ein Befehl für meine TQuery oder TZQuery ist, ist eigentlich egal da sie ja dieselben Attributnamen haben
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Do 18.08.05 14:50 
user profile iconGwaineg hat folgendes geschrieben:
ich schreibe ein Programm zum synchronisieren einer Paradox-DB(local) mit einer MYSql-DB(online)

dafür brauch ich einen Befehl der mir den PrimaryKey der Tabellen angibt, also den Attributnamen des PrimaryKeys
ob das jetzt ein Befehl für meine TQuery oder TZQuery ist, ist eigentlich egal da sie ja dieselben Attributnamen haben


Meinst du das AutoInc Feld schau mal hier mein Thread www.delphi-forum.de/...45505&highlight=
Gwaineg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 55

WIN XP Prof
D7 Ent
BeitragVerfasst: Do 18.08.05 16:17 
hmmmmm ...
ich versteh es irgendwie nicht ganz, hab jetzt einfach mal bei mir reinkopiert und es geht natürlich nicht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function TSL.test: string;
var i:integer;
    idn:string;
begin
    for i:=0 to qu2.FieldCount-1 do
    if(qu2.FieldByName(qu.Fields.Fields[i].FieldName).AsString = 'auto_increment')then
      idn:=qu2.Fields.Fields[i].FieldName;
    result:=idn;
end;


qu2 ist meine TZQuery
die funktion gibt nach dem aufruf nichts zurück

ich glaub das ist doch nicht das was ich brauche
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: So 21.08.05 22:11 
user profile iconGwaineg hat folgendes geschrieben:
hmmmmm ...
ich versteh es irgendwie nicht ganz, hab jetzt einfach mal bei mir reinkopiert und es geht natürlich nicht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function TSL.test: string;
var i:integer;
    idn:string;
begin
    for i:=0 to qu2.FieldCount-1 do
    if(qu2.FieldByName(qu.Fields.Fields[i].FieldName).AsString = 'auto_increment')then
      idn:=qu2.Fields.Fields[i].FieldName;
    result:=idn;
end;


qu2 ist meine TZQuery
die funktion gibt nach dem aufruf nichts zurück

ich glaub das ist doch nicht das was ich brauche


Ich werd aus deinem Codebeispiel nicht ganz schlau! Ist qu2 bei dir die ZQuery? Und ließt du hier eine MySQL Datenbank aus?

Also das Bespiel das zu dem ich dir den Link gegeben habe ist speziel für MySQL!
MySQL hat folgende Felder:

-> Field - Type - Null - Key - Default - Extra - Collation - Privileges - Comment
in irgendeinem dieser Felder ist hinterlegt dass es Primäry key ist!

Für AutoInc siehts so aus:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
var ZQuery : TZQuery;               // Diese Komponente auf Form setzen
    ZConnection : TZConnection;     // und diese auch
   
   // Das hier im ObjectInspector setzen
    with ZConnection do
    begin
     Protocol := 'mysql...'// das richtige MySQL Protocol wählen    
     Database := 'test';
     Hostname := 'localhost'// Wenn auf deinem Computer der MySQL Server läuft,  oder IP Adresse deines Servers
     User :=     'root';      // Username dem Rechte zugeteilt wurden auf DB zuzugreifen
     Password := '';          // Passwort die für DB eingestellt wurde
     Properties.Values['timeout'] := '5'// Timeout setzen wie lange versucht wird eine Verbindung aufzubauen
     
     // Jetzt connecten
     try
       Connect;
     except
       if(not Connected)then
       begin
       ShowMessage('Verbindung fehlgeschlagen!');
       Exit;
       end;
     end
    end;
    
    // Das auch im ObjectInspector setzen
    ZQuery.Connetion := ZConnection;  
     
    ZQuery.SQL.Clear;
    ZQuery.SQL.Add('Show full columns from `Testtabelle`');  // hier anstatt Testtabelle deine Tabelle
    ZQuery.Open;
    ZQuery.First;
    while not ZQuery.Eof do
    begin
    if ZQuery.FieldByName('Extra').AsString = 'auto_increment' then // Hier muß du anstatt Extra ein anderes nehmen, irgendeins der oben genannten
    begin
    AutoIncField := ZQuery.FieldByName('Field').AsString;           // hiermit prüfst du wie der Feldname heißt der dann die Option hat!
    Break;
    end;
    ZQuery.Next;   // <--- Das hast du vergessen
    end;