Hallo,
ich schon wieder
Ich habe eine kleine Personal-Verwaltung geschrieben, die soweit auch gut funktioniert, allerdings habe ich ein Problem beim Refreshen von FIBDataset.
Es wird in die Tabelle PERSONAL ein neuer Record mit Append eingefügt.
nachdem im Formular die Daten eigegeben wurde, schreibe ich den Record in die Tabelle
Delphi-Quelltext
1: 2:
| dsetPers.Post; dsetPers.Refresh; |
Es gibt in der Tabelle ein Feld PERSONALID, welches mittels Trigger/Generator automatisch erzeugt wird. Das funktioniert auch alles wunderbar, die Werte stehen in der Tabelle (Kontrolliert mit IBExpert)
Jetzt kann man dem Record noch Dokumente hinzufügen (Passbild etc.), die in einer anderen Tabelle BLOBS gespeichert werden. Das mach ich über einen FIBQuery.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| with qryPhoto do begin SQL.Clear; SQL.Add('INSERT INTO "BLOBS" (DATA, PERSONALID, PHOTO, ORIGNAME, ORIGSIZE)'); SQL.Add('VALUES (:DATA, :PERSONALID, :PHOTO, :ORIGNAME, :ORIGSIZE)'); ParamByName('DATA').LoadFromStream(ms); ParamByName('PERSONALID').AsInteger := dsetPers.FieldValues['PERSONALID']; ParamByName('PHOTO').AsString := '1'; ParamByName('ORIGNAME').AsString := ExtractFileName(sName); ParamByName('ORIGSIZE').AsInteger := ms.Size; ExecQuery; end; |
Das funktioniert soweit auch noch, es sei denn, man versucht, ein Dokument einem neu eingefügten Record zuzuweisen. In diesem Fall ist der Wert das Feldes PERSONALID Null. Trotz Refresh.(siehe oben) Mache ich statt dessen dsetPers.FullRefresh, funktioniert es. Nur FullRefresh tut das für alle Records, was ab einer gewissen Anzahl nicht mehr wirklich akzeptabel ist.
Wo könnte hier der Fehler liegen?