![]() |
Datenbank: Access • Version: 2000 • Zugriff über: ADO
datentypen in kriterienausdruck unverträglich Access
Ich füge über Insert Datensätze in eine Accesstabelle
->
SQL-Code:
Datentypen der Felder in Access
Insert Into T_Stammdaten
(ZaehlPkt, GueltigAb, KdNr, Anrede, Name, Vorname, Strasse, Hausnummer, PLZ, Ort, KdNrNetznutzung, VermittlerID, AbgemeldetAm, Abschlag, Telefon) Values (:ZaehlPkt, :GueltigAb, :KdNr, :Anrede, :Name, :Vorname, :Strasse, :Hausnummer, :PLZ, :Ort, :KdNrNetznutzung, :VermittlerID, :AbgemeldetAm , :Abschlag, :Telefon) ZaehlPkt = Longint GueltigAb = Datum/Uhrzeit KdNr = Text Anrede = Text Name = Text Vorname = Text Strasse = Text Hausnummer = Text PLZ = Text Ort = Text KdNrNetznutzung = Text VermittlerID = Longint AbgemeldetAm = Datum Abschlag = Währung Telefon = Text Datentypen der Felder in Delphi
Delphi-Quellcode:
FZaehlPktID : Longint;
FGueltigAb : TDate; FKdNrSwFi : String; FAnrede : String; FName : String; FVorname : String; FStrasse : String; FHausnummer : String; FPLZ : String; FOrt : String; FKdNrNetznutzung: String; FVermittlerID : Longint; FAbgemeldetAm : TDate; FAbschlag : Currency; FTelefon : String; hier weise ich den Paramtern dann ihre werte zu und führe die sql aus
Delphi-Quellcode:
der ersten 3 Datensätze, aus der Objectliste, werden in die Tabelle geschrieben. Bei dem 4. kommt
for i:= 0 to FStammList.Count -1 do
begin Stamm:= FStammList.Items[i] as TStamm; DModMDB.QInsert.Parameters.ParamValues['ZaehlPkt']:= Stamm.ZaehlPktID; DModMDB.QInsert.Parameters.ParamValues['GueltigAb']:= Stamm.GueltigAb; DModMDB.QInsert.Parameters.ParamValues['KdNr']:= Stamm.KdNRSwFi; DModMDB.QInsert.Parameters.ParamValues['Anrede']:= Stamm.Anrede; DModMDB.QInsert.Parameters.ParamValues['Name']:= Stamm.Name; DModMDB.QInsert.Parameters.ParamValues['Vorname']:= Stamm.Vorname; DModMDB.QInsert.Parameters.ParamValues['Strasse']:= Stamm.Strasse; DModMDB.QInsert.Parameters.ParamValues['Hausnummer']:= Stamm.Hausnummer; DModMDB.QInsert.Parameters.ParamValues['PLZ']:= Stamm.PLZ; DModMDB.QInsert.Parameters.ParamValues['Ort']:= Stamm.Ort; DModMDB.QInsert.Parameters.ParamValues['KdNrNetznutzung']:= Stamm.KdNrNetznutzung; DModMDB.QInsert.Parameters.ParamValues['VermittlerID']:= Stamm.VermittlerID; DModMDB.QInsert.Parameters.ParamValues['AbgemeldetAm']:= Stamm.AbgemeldetAm; DModMDB.QInsert.Parameters.ParamValues['Abschlag']:= Stamm.Abschlag; DModMDB.QInsert.Parameters.ParamValues['Telefon']:= Stamm.Telefon; DModMDB.QInsert.ExecSQL; end; dann die Fehlermeldung!! Ich bitte um Hilfe!!! |
Re: datentypen in kriterienausdruck unverträglich Access
Delphi-Quellcode:
Versuch es mal mit
FGueltigAb : TDateTime;
Delphi-Quellcode:
DModMDB.QInsert.Parameters.ParamByName('<Paramter>').Value := ...
|
Re: datentypen in kriterienausdruck unverträglich Access
:-D es funktioniert!! Ich hab jetzt nicht getestet, ob es am datum oder an den Parameternaufrufen lag!!!
:thumb: dankeschön |
Re: datentypen in kriterienausdruck unverträglich Access
Nochmal ne frage...(ich weiß eigntl nen neuer thread, aber...)
ich belege ja das Datum mit 0 vor!! Dadurch steht in der Tabelle 00:00:00!! Allerdings sollte da gar nichts drinne stehen!! Was muss ich da übergeben, sodass da nichts drinne steht?! |
Re: datentypen in kriterienausdruck unverträglich Access
0 bedeutet auch 31.12.1899 00:00:00
der Wert muss NULL sein. |
Re: datentypen in kriterienausdruck unverträglich Access
Das Funktoniert aber nicht. Wenn ich dem Parameter Null übergebe kommt dies
-> Ein Parameterobjekt ist nicht ordnungsgemäß definiert. Inkonsistente oder unvollständige Informationen wurden angegeben. |
Re: datentypen in kriterienausdruck unverträglich Access
Zeig mal wie du es versuchst
|
Re: datentypen in kriterienausdruck unverträglich Access
so:
Delphi-Quellcode:
if Stamm.AbgemeldetAm <> 0 then
DModMDB.QInsert.Parameters.ParamByName('AbgemeldetAm').Value:= Stamm.AbgemeldetAm else DModMDB.QInsert.Parameters.ParamByName('AbgemeldetAm').Value:= Null; |
Re: datentypen in kriterienausdruck unverträglich Access
Hallo,
das Problem ist, dass Du dort, wo der Parameter auf Null gesetzt wird, dann eben nichts steht. Im Insert-Statement stehen dann zwei ,, . Hatte das Problem vor Jahren auch mal und bin dann hergegangen und habe den Parameter im SQL durch das Wort NULL ersetzt. Zugegeben, ist keine schöne Lösung, aber anders habe ich es seinerzeit nicht wegbekommen. Und mit noch einem Problem musst Du rechnen: Wenn Du einen Leerstring in die Datenbank schreiben musst, hier bin ich hergegangen und habe immer ein Leerzeichen an den String gehangen, der wurde beim Speichern in der Datenbank automatisch wieder weggenommen (keine Ahnung von wem, war auch eine Access-Datenbank), alternativ musst Du bei leeren Strings auch den Parameter durch die Zeichenfolge NULL ersetzen.
Delphi-Quellcode:
Stephan
var
sSQL : String; begin ... If Assigned(Query) Then With Query.Parameters Do Begin sSQL := Query.SQL.Text; If FindParam('ID') <> Nil Then Begin ParamByName('ID').Value := FID; End; If FindParam('Aktenzeichen') <> Nil Then Begin ParamByName('Aktenzeichen').Value := FAktenzeichen + ' '; End; If FindParam('ServicenummerPraefix') <> Nil Then Begin ParamByName('ServicenummerPraefix').Value := FServicenummerPraefix; End; If FindParam('ServicenummerRufnummer') <> Nil Then Begin ParamByName('ServicenummerRufnummer').Value := FServicenummerRufnummer + ' '; End; If FindParam('Datum') <> Nil Then Begin If FDatum = 0 Then Begin sSQL := AnsiReplaceText(sSQL, ':Datum', 'NULL'); End Else Begin ParamByName('Datum').Value := FDatum; End; End; ... Query.SQL.Text := sSQL; Query.ExecSQL; ... end; |
Re: datentypen in kriterienausdruck unverträglich Access
Wuheyyy Stephan, genau das wars!! Klingt auch ziemlich einleuchtend DANKESCHÖN
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 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