Zitat von
dataspider:
schau mal in die Hilfe von FibPlus.
Dann wirst du sehen, dass du TpFibDataSet benutzen musst.
Die
Query ist nur unidirektional und von TComponent abgeleitet.
Cu, Frank
Hallo hab die Hilfedatei wirklich gelesen.
Dort steht:
Using TpFIBQuery you can do the following things.
· You can get unidirectional dataset creating select statement into
SQL property.
· You can do any database manipulation — insert, update and delete data, modifying metadata.
· You can execute stored procedures.
aber ich habe das ganze geändert und auf Datasets umgestellt.
Das sieht jetzt so aus:
Delphi-Quellcode:
function Neue_GuID: String;
var
guidWork: TGUID;
begin
CoCreateGuid(guidWork);
Result := GUIDToString(guidWork);
end;
procedure Tfrm_tools.btn_idreplClick(Sender: TObject);
begin
DM.pFIBDB_Gideons.Connected := True;
DM.pFIBDS_NursingH.Open;
DM.pFIBDS_NursingH_D.Open;
DM.pFIBDS_NursingH_DD.Open;
if not DM.pFIBDS_Camps.Active then DM.pFIBDS_Camps.Open;
DM.pFIBDS_NursingH_D.Close;
DM.pFIBDS_NursingH_D.UpdateSQL.Text := 'UPDATE Nursing_H_D SET ID_AREA = :newID WHERE id = :oldID';
DM.pFIBDS_NursingH_D.Active := True;
DM.pFIBDS_NursingH.Close;
DM.pFIBDS_NursingH.SelectSQL.Text := 'SELECT ID FROM Nursing_H';
DM.pFIBDS_NursingH.Active := True;
while not (DM.pFIBDS_NursingH.Eof) do
begin
newID := Neue_GuID;
oldID := DM.pFIBDS_NursingH.FieldByName('id').AsString;
DM.pFIBDS_NursingH.edit;
DM.pFIBDS_NursingH.FieldByName('id').AsString := newID;
DM.pFIBDS_NursingH.post;
DM.pFIBDS_NursingH_D.ParamByName('newID').AsString := newID;
DM.pFIBDS_NursingH_D.ParamByName('oldID').AsString := oldID;
DM.pFIBDS_NursingH_D.post;
DM.pFIBDS_NursingH.Next;
end;
end;
leider will das immer noch nicht. Bin echt den halben Tag heute aum Rumproieren
habe auch nebenbei den BT
SQL Monitor am laufen. Aber mit den Datasets habe ich es echt ( auch )noch nicht
geschaft dass er die IDs durch GUIDs erszt.
Manfred
PS: wenns hilft?
SQL-Code:
CREATE TABLE NURSING_H (
ID ID /* ID = CHAR(38) NOT NULL */,
C_NR T30 NOT NULL /* T30 = VARCHAR(30) */,
U_NR T30 NOT NULL /* T30 = VARCHAR(30) */,
NAME T130 /* T130 = VARCHAR(130) */,
STR T130 /* T130 = VARCHAR(130) */,
PLZ PLZ /* PLZ = VARCHAR(10) */,
CITY T50 /* T50 = VARCHAR(50) */,
TEL T20 /* T20 = VARCHAR(20) */,
FAX T20 /* T20 = VARCHAR(20) */,
EMAIL T50 /* T50 = VARCHAR(50) */,
HOMEPAGE T130 /* T130 = VARCHAR(130) */,
ANZ_PL T10 /* T10 = VARCHAR(10) */,
WORKER INTEGER,
MT SMALLINT,
ACCEPTANCE INTEGER,
STATUS INTEGER,
MEMO TEXT /* TEXT = BLOB SUB_TYPE 2 SEGMENT SIZE 4096 */,
NC INTEGER,
CS INTEGER,
L_UPDATE TIME_S /* TIME_S = TIMESTAMP */,
STAT_UPDATE INTEGER,
STAT_DEL INTEGER
);
SQL-Code:
CREATE TABLE NURSING_H_D (
ID ID /* ID = CHAR(38) NOT NULL */,
C_NR T30 NOT NULL /* T30 = VARCHAR(30) */,
U_NR T30 NOT NULL /* T30 = VARCHAR(30) */,
ID_AREA ID /* ID = CHAR(38) NOT NULL */,
D_DATE "DATE" /* "DATE" = DATE */,
D_C_PERSON T50 /* T50 = VARCHAR(50) */,
D_C_THRU T130 /* T130 = VARCHAR(130) */,
D_MEMO TEXT /* TEXT = BLOB SUB_TYPE 2 SEGMENT SIZE 4096 */,
L_UPDATE TIME_S /* TIME_S = TIMESTAMP */,
STAT_UPDATE INTEGER,
STAT_DEL INTEGER
);