Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi speichern von daten in interbase-datentabelle (https://www.delphipraxis.net/4268-speichern-von-daten-interbase-datentabelle.html)

Grumble 22. Apr 2003 08:25


speichern von daten in interbase-datentabelle
 
Hallo,

ich habe folgendes problem, ich habe 88 werte in einem stringgrid, welche in eine interbase datentabelle geschrieben werden sollen. nun gelingt mir das an sich schon, es werden aber nur die ersten 87 werte eingetragen, kann mir evtl. einer sagen woran das liegen koennte? hier der code:

Delphi-Quellcode:
for j:=1 to length(activestrat.timekrits) do // anzahl der krits
 for i:=1 to length(activestrat.timekrits[j]) do // anzahl der zeitp
               begin
                 FDB.DS_Timedepvals.Active:=true;
                 FDB.DS_Timedepvals.Append;
                 FDB.DS_TimedepvalsID_OPTIONEN.AsInteger:=Opt_ID;
                 FDB.DS_TimedepvalsID_KRITERIEN.AsInteger:=kritid[j-1];
                 FDB.DS_TimedepvalsTIMEPOINT.AsInteger:=zeitpunkte[i-1];
          FDB.DS_TimedepvalsWERT.AsString:=activestrat.timekrits[j,i-1];
               end;

// bis hierher passt es, auch der letzte wert, wert 88, wird angezeigt

               
               //Suchen des eben angelegten Datensatzes
           FDB.SQL_S_Timedepvals.Params[0].Value:=opt_id;
           FDB.SQL_S_Timedepvals.ExecQuery;
           if FDB.SQL_S_Timedepvals.RecordCount>0 then
           begin
             while not FDB.SQL_S_Timedepvals.Eof do
             begin
               Exist:=FDB.SQL_S_Timedepvals.RecordCount;
               FDB.SQL_S_Timedepvals.Next;
             end;
           end else
           begin
             //Datensatz nicht vorhanden
             MessageDlg('Der Optionsdatensatz konnte nicht verknüpft werden.', mtError,[mbOk], 0);
             FDB.TR_FARce.Rollback;
             exit;
           end;
           FDB.TR_FARce.Commit;
nach dem commit stehen aber nur die ersten 87 werte drin ? :shock:

Grumble
:coder:

MrSpock 22. Apr 2003 08:34

Hallo Grumble,

wie ist denn das Array definiert? Läuft es ab 0 oder 1?

Grumble 22. Apr 2003 08:45

griesse mr.spock,

also meinst du das timekrits array?
das sieht so aus:

timekrits:array[1..8] of array of string;

aber wie ich bereits schrieb, wird das aber alles durchlaufen
im 88 durchlauf der schleife stehen auch genau die richtigen werte
so ist z.b. hier

FDB.DS_TimedepvalsWERT.AsString:=activestrat.timek rits[j,i-1]

der wert genau der 88. im 88 durchlauf

oder meinst du was ganz anderes?

Grumble
:coder:

Grumble 22. Apr 2003 09:04

ich habe grad entdeckt, dass wenn ich nach den schleifen noch einmal die zeile

FDB.DS_Timedepvals.Append;

einfuege auch der letzte datensatz geschrieben wird, der recordcount ist dann auch auf 88 wie es sein soll, muss dass so sein?

Grumble
:coder:

MrSpock 22. Apr 2003 09:11

Hallo Grumble,

"Append" fügt nur einen Satz hinzu. Die Tabelle wird dadurch in in Insert-Mode versetzt. Erst nach dem Aufruf von "Post" wird der neue Datensatz übernommen.

woki 22. Apr 2003 09:13

Hallo,

beim ersten überfliegen Deiner Zeilen ist mir kein Post aufgefallen. Das Bearbeiten eines Datensatzes wird immer mit einem Post abgeschlossen. Manchmal passiert das auch automatisch, aber darauf sollte man sich nicht verlasssen.

Beim Append eines neuen Satzes wird automatisch geposted, deshalb sind alle Datensätze da, wenn du noch einen 89. Satz anfügst.

Güsse
Wolfgang

ah, zu spät

Grumble 22. Apr 2003 09:18

vielen dank leute,

das mit dem post war das problem, ich hab leider nur wenig ahnung von diesen datenbanken-sachen, aber heute hab ich wieder was dazugelernt :D
danke nochmals

Grumble
:coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 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