![]() |
Hi,
Zitat:
Etwas einfacher geht es aber schon (so wie ich es am Anfangang gemacht habe : Zitat:
WGDS.FieldValues ['ID']; Dann entfällt die Typumwandlung, bzw. wird sie intern gemacht !! Zitat:
Gruß Hansa |
@harrybo : das da drucke ich mir aus, hol es mit und lese es zum Nachtisch. :lol: Auf den ersten Blick ist das das Gesuchte!
Gruß Hansa |
Zitat:
Durch das .AsString Sagst Du deinem DataSet nämlich wie Du es haben möchtest. Ich kann z.B. folgendes machen. In der Tabelle ist das Feld NUMMER als Integer deklariert.
Code:
Zumindest geht das so bei mir.
var
i_nummer : Integer; s_nummer : String; begin i_nummer := Query1.FieldByName ('nummer').AsInteger; s_nummer := Query1.FieldByName ('nummer').AsString; end; |
Hi Sharky,
das stimmt ja alles, aber guck Dir mal die Beiträge weiter oben an. FieldValues gibt es ja auch noch :!: Gruß Hansa |
Hi,
Zitat:
Gruß Hansa |
Zitat:
|
Hi Hansa,
das liegt wahrscheinlich nicht am Unterschied zwischen FIBplus und IBX, ich wusste nur nicht, womit Du überhaupt arbeitest. Die Sache ist für Dich dann einfacher, die Queries haben automatische Parameter (siehe Object Inspector). Du brauchst den Parameter nicht zu definieren und kannst einfach zuweisen, z.B. mit
Delphi-Quellcode:
Gibt es keinen Parameter, wird er angelegt.
Query1.Params[0].Value := APar;
Hier mal eine allgemeine Funktion, die ein Dataset mit einem Parameter refreshed (IBX und Interbase). Übergeben wird das Dataset Object, der Wert des Parameters, der ID Wert auf den der Datensatzzeiger positioniert werden soll, Konstante, die sagt, was mit der laufenden Transaction passieren soll:
Delphi-Quellcode:
gruß, harrybo
procedure TDM.RequeryDS1(ADataset: TIBDataset; APar: variant; AID: longint; AType: integer);
begin with ADataset do try DisableControls; if Active then if State in [dsEdit, dsInsert] then Post; Close; if Transaction.InTransaction then case AType of c_Commit : Transaction.Commit; c_CommitRetain : Transaction.CommitRetaining; c_Rollback : Transaction.Rollback; end; if not Transaction.InTransaction then Transaction.StartTransaction; Params[0].Value := APar; Active := true; if AID > 0 then Locate(Fields[0].FieldName, AID, []); finally EnableControls; end; end; |
Hi harrybo,
wo kommt denn das RequeryDS1 hin ? Du scheinst da eine allgemeine Prozedur geschrieben zu haben. Im OI ist hierüber jedenfalls nichts zu finden. Gruß Hansa |
Hi Hansa,
ja, es ist eine selfmade Procedure, die bei mir im Datamodul und dort im Public Abschnitt, damit man von draußen Zugrif drauf hat. Da ein Datamodul meist mehrere TDataset Objekte versammelt, kann man der Procedure noch mitteilen, welchen Dataset man aktualisieren will. Der Aufruf kann dann so aussehen:
Delphi-Quellcode:
DM.dsTER ist hier ein TDataset, der Rest spricht für sich, hoffe ich (nach meinen Erfahrungen mit X-Dragon trau ich mich ja kaum noch, feste Werte irgendwo reinzuschreiben).
DM.RequeryDS1(DM.dsTER, gActDate, gActRec.TER, c_Commit);
gruß, harrybo P.S. sieht nach Master Detail aus, was Du vorhast. Da gibt es ja, zumindest bei IBX, die code-lose Variante mit zusätzlicher Datasource, die wunderbar läuft (ok, ein einziger BeforeInsert Trick). |
Hi,
Zitat:
Gruß Hansa |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 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-2025 by Thomas Breitkreuz