![]() |
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:
nach dem commit stehen aber nur die ersten 87 werte drin ? :shock:
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; Grumble :coder: |
Hallo Grumble,
wie ist denn das Array definiert? Läuft es ab 0 oder 1? |
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: |
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: |
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. |
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 |
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 00:34 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