Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zugrif Access über ADO schreiben in Tabelle (https://www.delphipraxis.net/186925-zugrif-access-ueber-ado-schreiben-tabelle.html)

matashen 13. Okt 2015 10:02

Datenbank: Access • Version: 00 • Zugriff über: ADO

Zugrif Access über ADO schreiben in Tabelle
 
Hallo,

ich steh aufn Schlauch

Ich hab eine Tabelle, die nicht von mir ist.

Darin möchte ich Daten schreiben.

Das auslesen klappt, nur wenn ich einen Datensatz rein schreiben will bekomm ich eine Fehlermeldung.

Fehlermeldung:
Ein Parameterobjekt ist nicht ordnungsgemäß definirt.
Inkonsistente oder unvollständige Informationen wurden angegeben.

Ich hab aber keine Ahnung was die Fehlermeldung mir sagen will.

hier mal mein Code zum schreiben der Daten

Delphi-Quellcode:
procedure TOfenoption.Insert_Database(Profil: TProfildaten);
var a:String;
begin
a:='INSERT INTO RegistrationNumber(Barcode,Cbs1L1Set,Cbs1L2Set,,Cbs2L1Set,Cbs2L2Set,'+
    'CreationDate,CreationName,CreationPWLevel,CreationTime,I_Ready,'+
    'Intfc_ArrivedPulses_L1,Intfc_ArrivedPulses_L2,Intfc_GivenPulses_L1,'+
    'Intfc_GivenPulses_L2,Intfc_PcbDelayOff_L1,Intfc_PcbDelayOff_L2,'+
    'Intfc_PcbDelayOn_L1,Intfc_PcbDelayOn_L2,L_PrimaerIndex,ModificationDate,'+
    'ModificationName,ModificationPWLevel,ModificationTime,PBC_Length_1,'+
    'PBC_Length_2,'+
    'PcbJamPulses_L1,PcbJamPulses_L2,PcbL1Set,PcbL2Set,'+
    'PcbLength,Recipe,RegistrationNumber'+
    ')'+
    'VALUES('+Profil.Barcode+','+profil.Cbs1L1Set+','+profil.Cbs1L2Set+','+profil.Cbs2L1Set+','+profil.Cbs2L2Set+','+
      Profil.CreationDate+','+Profil.CreationName+','+Profil.CreationPWLevel+','+Profil.CreationTime+','+Profil.I_Ready+','+
      Profil.Intfc_ArrivedPulses_L1+','+Profil.Intfc_ArrivedPulses_L2+','+Profil.Intfc_GivenPulses_L1+','+
      Profil.Intfc_GivenPulses_L2+','+Profil.Intfc_PcbDelayOff_L1+','+profil.Intfc_PcbDelayOff_L2+','+
      Profil.Intfc_PcbDelayOn_L1+','+Profil.Intfc_PcbDelayOn_L2+','+Profil.L_PrimaerIndex+','+profil.ModificationDate+','+
      Profil.ModificationName+','+Profil.ModificationPWLevel+','+Profil.ModificationTime+','+Profil.PBC_Length_1+','+
      Profil.PBC_Length_2+','+
      Profil.PcbJamPulses_L1+','+Profil.PcbJamPulses_L2+','+Profil.PcbL1Set+','+Profil.PcbL2Set+','+
      Profil.PcbLength+','+Profil.Recipe+','+Profil.RegistrationNumber+')';
ADOQuery1.SQL.Text:=a;
ADOQuery1.execsql;
timer1.Enabled:=true;

end;
Bitte echte Hinweise und keine Links quer durchs Forum. Ich les jetzt schon den ganzen Tag zeugs was ich gegoogelt und in der Forenhilfe gefunden hab aber irgendwie find ich keine Lösung.

jobo 13. Okt 2015 10:10

AW: Zugrif Access über ADO schreiben in Tabelle
 
Das ist idR ein Datenproblem oder ein veralteter Treiber oder ein Konflikt mit irgendwelchen Constraints oder alles.
Prüfe den eingesetzten Treiber auf Aktualität. Im Bereich MS / MS Access gibt es evtl. mehrere Möglichkeiten. Es doch OLEDB oder?
Weiter kannst Du die problematische Stelle am besten per Ausschluss finden.
Eine Hälfte der Felder weglassen und versuchen, geht?, dann andere Hälfe usw.
Gerne tritt der Fehler z.B. bei "ungültigen" Datumsangaben auf "1.4.0033" usw.

matashen 13. Okt 2015 10:11

AW: Zugrif Access über ADO schreiben in Tabelle
 
Das heist ich soll erstmal prüfen welche Datentypen hinter der Tabelle stecken falls da was fieses rein gebaut wurde wo ich jetzt mit dem falschen Datentyp ran gehe?

baumina 13. Okt 2015 10:16

AW: Zugrif Access über ADO schreiben in Tabelle
 
Wahrscheinlich fehlen die Anführungszeichen für Stringwerte. Am Besten hier mit Parametern arbeiten.

matashen 13. Okt 2015 10:21

AW: Zugrif Access über ADO schreiben in Tabelle
 
Also so geht's nicht

Delphi-Quellcode:
'VALUES("'+Profil.Barcode+'","'+profil.Cbs1L1Set+'","'+profil.Cbs1L2Set+'","'+profil.Cbs2L1Set+'","'+profil.Cbs2L2Set+'","'+
      Profil.CreationDate+'","'+Profil.CreationName+'","'+Profil.CreationPWLevel+'","'+Profil.CreationTime+'","'+Profil.I_Ready+'","'+
      Profil.Intfc_ArrivedPulses_L1+'","'+Profil.Intfc_ArrivedPulses_L2+'","'+Profil.Intfc_GivenPulses_L1+'","'+
      Profil.Intfc_GivenPulses_L2+'","'+Profil.Intfc_PcbDelayOff_L1+'","'+profil.Intfc_PcbDelayOff_L2+'","'+
      Profil.Intfc_PcbDelayOn_L1+'","'+Profil.Intfc_PcbDelayOn_L2+'","'+Profil.L_PrimaerIndex+'","'+profil.ModificationDate+'","'+
      Profil.ModificationName+'","'+Profil.ModificationPWLevel+'","'+Profil.ModificationTime+'","'+Profil.PBC_Length_1+'","'+
      Profil.PBC_Length_2+'","'+
      Profil.PcbJamPulses_L1+'","'+Profil.PcbJamPulses_L2+'","'+Profil.PcbL1Set+'","'+Profil.PcbL2Set+'","'+
      Profil.PcbLength+'","'+Profil.Recipe+'","'+Profil.RegistrationNumber+'")';
oder hab ich da jetzt was falsch verstanden.
Allerdings ändert sich die Fehlermeldung in:
Syntaxfehler in der INSERT INTO-Anweisung.
Das mit den Anführungszeichen bei Stringwerten kenn ich aus den SQLite. Dachte bei Access -ADO brauch ich die nicht.

matashen 13. Okt 2015 10:25

AW: Zugrif Access über ADO schreiben in Tabelle
 
benötige ich hier etwa

QuotedStr

??

baumina 13. Okt 2015 10:32

AW: Zugrif Access über ADO schreiben in Tabelle
 
Delphi-Quellcode:
'VALUES(:Barcode, :Cbs1L1Set ....'
Ado.ParamBaName('Barcode).AsIrgendwas := Irgendwas;
so in der Art.

Jumpy 13. Okt 2015 10:35

AW: Zugrif Access über ADO schreiben in Tabelle
 
Ws kommt ja drauf an, was das für ein Feld ist, bei Strings brauchst du halt Quotes. Ob nun per Hand rein gemacht oder per QuotedStr ist ja egal. Bei z.B. Numerischen Feldern brauchst du das nicht.

Am saubersten ist es aber wohl, wenn du Parameter verwendest.

Delphi-Quellcode:
  'VALUES(:Barcode,:Cbs1L1Set,...'
 
  ADOQuery1.Parameter.paramValues['Barcode'] := Profel.Barcode;
  ADOQuery1.Parameter.paramValues['Cbs1L1Set'] := Profil.Cbs1L1Set;
  ...

quaero 13. Okt 2015 10:58

AW: Zugrif Access über ADO schreiben in Tabelle
 
In der ersten Zeile deiner Anweisung stehen zwei Komma hintereinander.

Testweise kannst du die Anfrage ja mal direkt in der Access-DB ausführen, da gibt es meist ausführlichere Fehlerbeschreibung.

p80286 13. Okt 2015 11:24

AW: Zugrif Access über ADO schreiben in Tabelle
 
Nicht zu vergessen, das "CreationDate". Ist das ein DateTime-Feld? oder ein String?
Je nachdem gibt es unterschiedliche Wege den Wert an die DB zu übergeben.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 Uhr.
Seite 1 von 3  1 23      

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