Einzelnen Beitrag anzeigen

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