AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi datentypen in kriterienausdruck unverträglich Access
Thema durchsuchen
Ansicht
Themen-Optionen

datentypen in kriterienausdruck unverträglich Access

Ein Thema von Butch87 · begonnen am 1. Aug 2008 · letzter Beitrag vom 1. Aug 2008
Antwort Antwort
Butch87

Registriert seit: 3. Mai 2007
70 Beiträge
 
#1

datentypen in kriterienausdruck unverträglich Access

  Alt 1. Aug 2008, 08:49
Datenbank: Access • Version: 2000 • Zugriff über: ADO
Ich füge über Insert Datensätze in eine Accesstabelle

->
SQL-Code:
 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)
Datentypen der Felder in Access
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:
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;
der ersten 3 Datensätze, aus der Objectliste, werden in die Tabelle geschrieben. Bei dem 4. kommt
dann die Fehlermeldung!!
Ich bitte um Hilfe!!!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: datentypen in kriterienausdruck unverträglich Access

  Alt 1. Aug 2008, 08:56
FGueltigAb : TDateTime; Versuch es mal mit

DModMDB.QInsert.Parameters.ParamByName('<Paramter>').Value := ...
Markus Kinzler
  Mit Zitat antworten Zitat
Butch87

Registriert seit: 3. Mai 2007
70 Beiträge
 
#3

Re: datentypen in kriterienausdruck unverträglich Access

  Alt 1. Aug 2008, 09:16
es funktioniert!! Ich hab jetzt nicht getestet, ob es am datum oder an den Parameternaufrufen lag!!!

dankeschön
  Mit Zitat antworten Zitat
Butch87

Registriert seit: 3. Mai 2007
70 Beiträge
 
#4

Re: datentypen in kriterienausdruck unverträglich Access

  Alt 1. Aug 2008, 09:29
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?!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: datentypen in kriterienausdruck unverträglich Access

  Alt 1. Aug 2008, 09:32
0 bedeutet auch 31.12.1899 00:00:00
der Wert muss NULL sein.
Markus Kinzler
  Mit Zitat antworten Zitat
Butch87

Registriert seit: 3. Mai 2007
70 Beiträge
 
#6

Re: datentypen in kriterienausdruck unverträglich Access

  Alt 1. Aug 2008, 09:42
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: datentypen in kriterienausdruck unverträglich Access

  Alt 1. Aug 2008, 10:27
Zeig mal wie du es versuchst
Markus Kinzler
  Mit Zitat antworten Zitat
Butch87

Registriert seit: 3. Mai 2007
70 Beiträge
 
#8

Re: datentypen in kriterienausdruck unverträglich Access

  Alt 1. Aug 2008, 10:31
so:
Delphi-Quellcode:
    if Stamm.AbgemeldetAm <> 0 then
      DModMDB.QInsert.Parameters.ParamByName('AbgemeldetAm').Value:= Stamm.AbgemeldetAm
    else
      DModMDB.QInsert.Parameters.ParamByName('AbgemeldetAm').Value:= Null;
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

Re: datentypen in kriterienausdruck unverträglich Access

  Alt 1. Aug 2008, 10:52
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:
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;
Stephan
  Mit Zitat antworten Zitat
Butch87

Registriert seit: 3. Mai 2007
70 Beiträge
 
#10

Re: datentypen in kriterienausdruck unverträglich Access

  Alt 1. Aug 2008, 11:11
Wuheyyy Stephan, genau das wars!! Klingt auch ziemlich einleuchtend DANKESCHÖN
  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 08:05 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