![]() |
Datenbank: Access • Version: 2000 • Zugriff über: ADO
Delphi Record in Access DB speichern
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich erzeuge in meinen Programm einen Datensatz, den ich in einem von mir generierten Record ablege, diesen Record muss ich persistent (in einer Access DB) speichern, ich habe auch schon die Tabellendefinitionen fertiggestellt, als Verbindungstyp nutze ich TADOConnection und als Query TADOQuery Nun ist meine Frage wie kann ich den record:
Delphi-Quellcode:
am besten in meiner DB anlegen? Soll ich mir ein Insert INTO stricken?
TKalibrierDaten = record
// Analogeingang Cal_4mA:Word; Cal_20mA:Word; Grenze_4mA_H:Word; Grenze_4mA_L:Word; Grenze_20mA_H:Word; Grenze_20mA_L:Word; // CT-Strom Eingang Cal_0_A:Word; Cal_2_5_A:Word; Grenze_0_A_H:Word; Grenze_0_A_L:Word; Grenze_2_5_A_H:Word; Grenze_2_5_A_L:Word; // PT100 Eingang Cal_PT100_Min40:Word; Cal_PT100_80:Word; Cal_PT100_200:Word; Grenze_PT100_Min40_H:Word; Grenze_PT100_Min40_L:Word; Grenze_PT100_80_H:Word; Grenze_PT100_80_L:Word; Grenze_PT100_200_H:Word; Grenze_PT100_200_L:Word; // AnalogAusgang 1 Cal_AOut1_0V:Word; Cal_AOut1_10V:Word; Cal_AOut1_0mA:Word; Cal_AOut1_4mA:Word; Cal_AOut1_20mA:Word; Grenze_AOut1_0V_H:Word; Grenze_AOut1_0V_L:Word; Grenze_AOut1_10V_H:Word; Grenze_AOut1_10V_L:Word; Grenze_AOut1_0mA_H:Word; Grenze_AOut1_0mA_L:Word; Grenze_AOut1_20mA_H:Word; Grenze_AOut1_20mA_L:Word; // AnalogAusgang 2 Cal_AOut2_0V:Word; Cal_AOut2_10V:Word; Cal_AOut2_0mA:Word; Cal_AOut2_4mA:Word; Cal_AOut2_20mA:Word; Grenze_AOut2_0V_H:Word; Grenze_AOut2_0V_L:Word; Grenze_AOut2_10V_H:Word; Grenze_AOut2_10V_L:Word; Grenze_AOut2_0mA_H:Word; Grenze_AOut2_0mA_L:Word; Grenze_AOut2_20mA_H:Word; Grenze_AOut2_20mA_L:Word; end; Die Tabelle sieht folgendermaßen aus: (siehe Anhang) Danke euch!! |
Re: Delphi Record in Access DB speichern
Zitat:
|
Re: Delphi Record in Access DB speichern
Hi
Nun, das ist eine ziemlich große Tabelle, was die Felder angeht. Ich denke, auch ADO - Komponenten haben eine ähnliche Funktionalität, wie die von Borland gelieferten Query-Komponenten, die mir zur Verfügung stehen. Ich nehme ein Datenmodul und packe dort meine Verbindung mittels TDatabase hinein, sowie die TQuery und die TUpdateSQL. Sind die Verbindungen zur Datenbank eingerichtet, gehe ich zuerst mit der rechten Maustaste in die Query und rufe den SQLBuilder auf. Mittels diesem lade ich alle Felder in die Query. Dann setze ich die Eigenschaft CachedUpdates auf true und gebe das UpdateObject mit dem UpdateSQL-Object an. Anschließend erfolgt ein rechter Mausclick in das UpdateSQL Object und ein Aufruf des Update-SQL Editors. Dort werden alle Felder übernommen und das Indexfeld markiert. Vielleicht erklärt folgender Programmblock den Zugriff vom Programm auf die Datenbank.
Delphi-Quellcode:
ob das mit ADO Komponenten genauso geht, weiß ich nicht, aber bisher war dies die einfachste Art, einen Datenbankzugriff zu realisieren. Ich hoffe, es hilft dir.
Procedure Store_Daten(Id: Integer);
Var SQLSatz : String; Begin SQLSatz:='Select * From MyTable'; SQLSatz:=SQLSatz+' Where (Ident='''+IntToStr(Id)+''')'; Datamodule.MyQuery.SQL.Clear; Datamodule.MyQuery.SQL.Add(SQLSatz); Datamodule.MyQuery.Open; If Datamodule.MyQuery.RecordCount>0 then // Datensatz existiert, öffnen für Edit Begin Datamodule.MyQuery.Edit; Datamodule.MyQuery['Feld_1'}:=Wert_1; Datamodule.MyQuery['Feld_2'}:=Wert_2; ......... Datamodule.MyQuery['Feld_n'}:=Wert_n; Datamodule.MyUpUpdateSQL.Apply(ukModify); end else begin Datamodule.MyQuery.Append; // neuer Datensatz Datamodule.MyQuery['Ident'}:=Id; // Id eintragen Datamodule.MyQuery['Feld_1'}:=Wert_1; Datamodule.MyQuery['Feld_2'}:=Wert_2; ......... Datamodule.MyQuery['Feld_n'}:=Wert_n; Datamodule.MyUpUpdateSQL.Apply(ukInsert); end; end; Gruß oldmax |
Re: Delphi Record in Access DB speichern
Hi,
ja das hilft mir sehr :) Meine Speicherung muss wiefolgt aufgebaut sein, vielleicht kannst du mir da ja ein wenig helfen: Ich habe eine Prüfnummer, die in der Tabelle Pruefung generiert wird (der Primärschlüssel als Autowert), diese Prüfnummer ist fortlaufen und muss immer eindeutig sein. Jetzt will ich zu dieser Prüfnummer die Kalibrierdaten ablegen, also muss ich ja beide Tabellen füllen, wie mach ich dass denn am Besten? ich habe also eine n:1 Beziehung... Danke Dir! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 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