AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi speichern von daten in interbase-datentabelle
Thema durchsuchen
Ansicht
Themen-Optionen

speichern von daten in interbase-datentabelle

Ein Thema von Grumble · begonnen am 22. Apr 2003 · letzter Beitrag vom 22. Apr 2003
Antwort Antwort
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#1

speichern von daten in interbase-datentabelle

  Alt 22. Apr 2003, 09:25
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 ?

Grumble
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2
  Alt 22. Apr 2003, 09:34
Hallo Grumble,

wie ist denn das Array definiert? Läuft es ab 0 oder 1?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#3
  Alt 22. Apr 2003, 09: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
  Mit Zitat antworten Zitat
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#4
  Alt 22. Apr 2003, 10: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
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5
  Alt 22. Apr 2003, 10: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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#6
  Alt 22. Apr 2003, 10: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
  Mit Zitat antworten Zitat
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#7
  Alt 22. Apr 2003, 10: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
danke nochmals

Grumble
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 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