Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi insert per schleife (https://www.delphipraxis.net/76009-insert-per-schleife.html)

Sauerkrautpoet 28. Aug 2006 17:31

Datenbank: MySQL / FB • Version: 5.x • Zugriff über: ZEOS / ibo

insert per schleife
 
hallo!
ich lade ein formular, bevor dies angezeigt wird, sollen daten von einer MYSQL tabelle in eine FB tab kopiert werden. also habe ich:

Delphi-Quellcode:
procedure onshow()
begin

   mysql_query_copy:=true; //sql code ist bereits vorhanden, kann also aktiv geschalten werden,wählt nur die relevanten daten mit nem select aus
   recordcount:=0;
   tmp:=iboqry_copy.sql.text;
   
    while NOT mysql_query_copy.EOF do
     begin
        recordcount++;
        iboqry_copy.param[0].asinteger:=mysql_query_copy.fieldvalue['irgendwas'];
          //gefüllt werden noch viele andere parameter  

        iboqry_copy.execsql;  //ibo_sql-insert ausführen
        mysql_query_copy.next //nächsten Datensatz anwählen
        iboqry_copy.sql.text:=i; //ursprünglichen sqlinsert wiederherstellen
      end;
     mysql_query_copy.active:=false;
     iboqry_showcopydata.active:=true; //abfrage zum anzeigen der kopierten daten aktivieren
end;

das ding ist jetzt: wenn ich das query showcopydata aktiviere(gehört zu einer grid) spuckt mir das ding wesentlich mehr datensätze aus wie ich egtl eingefügt hatte, lets say: copy:3 DS, angezeigt werden 18.
ich dachte erst, ich schleppe alten sqltext mit und habe dann den urspünglichen sql-insert immer wieder zurückgesetzt...bringt nix...
wenn man sich recordcount ausgeben lässt, wurden auch nur (zb) 3 durchläufe absolviert, dennoch besteht das -evolutionsbiologisch gesehen äußerst effektive-ergebnis von 18datensätzen...
wäre toll wenn jmd einen tipp hätte

shmia 28. Aug 2006 17:51

Re: insert per schleife
 
1.) das Event OnShow kann durchaus mehrfach von der VCL angefeuert werden (6*3=18 )
2.) du setzt ein Flag (mysql_query_copy), fragst es aber nicht ab. Warum?
3.)
Delphi-Quellcode:
iboqry_copy.sql.text:=i; //ursprünglichen sqlinsert wiederherstellen
Warum willst du den ursprünglichen sqlinsert wiederherstellen?
Das bringt doch nichts ausser Verwirrung.
Für jede Aufgabe gibt es eine eigene Query.

Sauerkrautpoet 28. Aug 2006 18:41

Re: insert per schleife
 
Zitat:

Zitat von shmia
1.) das Event OnShow kann durchaus mehrfach von der VCL angefeuert werden (6*3=18 )
2.) du setzt ein Flag (mysql_query_copy), fragst es aber nicht ab. Warum?
3.)
Delphi-Quellcode:
iboqry_copy.sql.text:=i; //ursprünglichen sqlinsert wiederherstellen
Warum willst du den ursprünglichen sqlinsert wiederherstellen?
Das bringt doch nichts ausser Verwirrung.
Für jede Aufgabe gibt es eine eigene Query.

danke, dass du dich kurz damit auseinandergesetzt hast!

punkt 1. dachte ich mir auch und hatte es schon per onclick probiert, selber schnulli...

zu punkt 2:
mysql_query_copy wird doch abgefragt...vor der while wird das query aktiviert und in der schleife per fieldvalues[..] abgerufen..sorry hatte im codebeispiel das ".active" vergessen *hmpf*


den sqlbefehl wiederherzustellen ist im grunde totaler schwachfug, da kann ich dir nur recht geben. aber eben weil die anzahl der ergebnisdatensätze so komisch war(bei 3->18 bei 5->34) hab ich auch auf einen komischen sachverhalt getippt: wollte nur vorsorgen, dass nicht im hintergrund der vorgehende sqlbefehl noch mitgeschleift wird..weisd wie...ergo ich irgendwas doppelt ausführe..war nur ein versuch ;)
ich will ja damit nicht einen komplett andren query überschreiben...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz