AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Delphi Record in Access DB speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Record in Access DB speichern

Ein Thema von DelphiManiac · begonnen am 27. Jul 2007 · letzter Beitrag vom 27. Jul 2007
Antwort Antwort
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

Delphi Record in Access DB speichern

  Alt 27. Jul 2007, 08:24
Datenbank: Access • Version: 2000 • Zugriff über: ADO
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:
  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;
am besten in meiner DB anlegen? Soll ich mir ein Insert INTO stricken?

Die Tabelle sieht folgendermaßen aus:

(siehe Anhang)

Danke euch!!
Miniaturansicht angehängter Grafiken
tblpruefung_200.gif  
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Delphi Record in Access DB speichern

  Alt 27. Jul 2007, 08:32
Zitat von DelphiManiac:
Soll ich mir ein Insert INTO stricken?
Ich würde das tun.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
oldmax

Registriert seit: 27. Apr 2006
Ort: Gieboldehausen
167 Beiträge
 
#3

Re: Delphi Record in Access DB speichern

  Alt 27. Jul 2007, 08:55
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:
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;
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.
Gruß oldmax
Noch ist mein Rechner mir zu Diensten.... ansonsten habe ich die Macht ihn zu vernichten !
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#4

Re: Delphi Record in Access DB speichern

  Alt 27. Jul 2007, 09:08
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!
  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 01:59 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