AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Standardwert bei ADO-Abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

Standardwert bei ADO-Abfrage

Ein Thema von dominikkv · begonnen am 14. Apr 2009 · letzter Beitrag vom 14. Apr 2009
Antwort Antwort
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#1

Standardwert bei ADO-Abfrage

  Alt 14. Apr 2009, 12:05
Datenbank: Access • Zugriff über: ADO
Hi,

ich versuche grade über ADO auf eine Access-Datenbank zuzugreifen.

Delphi-Quellcode:
procedure TDatenbank.DiscountExists(EAN: string);
begin
  if fConnection.Connected then
    with fQuery do
      begin
        Close;
        SQL.Clear;
       // Active := False;

       // fConnection.BeginTrans;

        SQL.Add('SELECT * FROM `Products`, `Discounts` WHERE (`Discounts`.ProduktFKID = `Products`.PKID) AND (EAN = ''0123456789'')');
        try
          Open;
         // fConnection.CommitTrans;
        except
         // fConnection.RollbackTrans;
        end;
      end;
end;
Jetzt kommt nach dem Open; aber immer die Fehlermeldung
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt MeinProgramm.exe ist eine Exception der Klasse EOleException mit der Meldung 'Parameter`Discounts`.ProduktFKID hat keinen Standardwert' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Was mache ich falsch?

mfg.Dominik
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Standardwert bei ADO-Abfrage

  Alt 14. Apr 2009, 12:10
Muss man bei Access nicht eckige Klammern statt der Backticks verwenden? Diese kenn ich nämlich eigentlich eher von MySQL.
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
onkelmehli

Registriert seit: 8. Mär 2006
119 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Standardwert bei ADO-Abfrage

  Alt 14. Apr 2009, 12:11
schon mal so versucht?
SQL.Add('SELECT * FROM Products, Discounts WHERE (Discounts.ProduktFKID = Products.PKID) AND (EAN = ''0123456789'')');
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Standardwert bei ADO-Abfrage

  Alt 14. Apr 2009, 12:21
Oder so?
Delphi-Quellcode:
procedure TDatenbank.DiscountExists(EAN: string);
begin
  if fConnection.Connected then
    with fQuery do
      begin
        Close;
        SQL.Clear;
        SQL.Add('SELECT [Products].*,[Discounts].* FROM [Products] ');
        SQL.Add('INNER JOIN [Discounts] ON [Discounts].ProduktFKID = [Products].PKID');
        SQL.Add('WHERE EAN = :EAN');
        Parameters.ParamByName('EAN').Value := EAN;
        try
          Open;
         // fConnection.CommitTrans;
        except
         // fConnection.RollbackTrans;
        end;
      end;
end;
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
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Standardwert bei ADO-Abfrage

  Alt 14. Apr 2009, 14:09
Danke schon mal für eure Antworten.
Zitat von onkelmehli:
schon mal so versucht?
SQL.Add('SELECT * FROM Products, Discounts WHERE (Discounts.ProduktFKID = Products.PKID) AND (EAN = ''0123456789'')');
Ja, gleiche Fehlermeldung wie oben.


Zitat von DeddyH:
Oder so?
Delphi-Quellcode:
procedure TDatenbank.DiscountExists(EAN: string);
begin
  if fConnection.Connected then
    with fQuery do
      begin
        Close;
        SQL.Clear;
        SQL.Add('SELECT [Products].*,[Discounts].* FROM [Products] ');
        SQL.Add('INNER JOIN [Discounts] ON [Discounts].ProduktFKID = [Products].PKID');
        SQL.Add('WHERE EAN = :EAN');
        Parameters.ParamByName('EAN').Value := EAN;
        try
          Open;
         // fConnection.CommitTrans;
        except
         // fConnection.RollbackTrans;
        end;
      end;
end;
Neue Fehlermeldung:
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt MeinProgramm.exe ist eine Exception der Klasse EOleException mit der Meldung 'Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
In EAN: string steht aber etwas drinn.
Wenn ich
Delphi-Quellcode:
SQL.Add('WHERE EAN = 0123456789');// oder
SQL.Add('WHERE EAN = ''0123456789''');
schreibe kommt wieder die Fehlermeldung mit dem Standardwert von oben.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Standardwert bei ADO-Abfrage

  Alt 14. Apr 2009, 14:17
Lass Dir die Abfrage doch von Access selbst generieren, dann müsstest Du nur den Parameter einsetzen. Ich kenne leider die genaue Syntax nicht.
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
onkelmehli

Registriert seit: 8. Mär 2006
119 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Standardwert bei ADO-Abfrage

  Alt 14. Apr 2009, 14:39
fehlt dann da nicht noch [], also so?
SQL.Add('WHERE [EAN] = :EAN');
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Standardwert bei ADO-Abfrage

  Alt 14. Apr 2009, 14:45
Zitat von DeddyH:
Lass Dir die Abfrage doch von Access selbst generieren, dann müsstest Du nur den Parameter einsetzen. Ich kenne leider die genaue Syntax nicht.
Daran habe ich noch garnicht gedacht

Die korrekte Syntax lautet
Delphi-Quellcode:
SQL.Add('SELECT Discounts.ProductFKID');
SQL.Add('FROM Products, Discounts');
SQL.Add('WHERE (([Discounts]![ProductFKID]=[Products]![PKID]) AND ([Products]![EAN]="' + EAN + '"));');
Danke für eure Hilfe
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Standardwert bei ADO-Abfrage

  Alt 14. Apr 2009, 14:49
Trotzdem solltest Du die Abfrage besser parametrisieren wie oben gezeigt, sonst kann es zu dummen Fehlern oder gar zu SQL-Injection kommen.
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
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Standardwert bei ADO-Abfrage

  Alt 14. Apr 2009, 15:20
bei dieser Syntax überkommt einen das Grausen:
WHERE (([Discounts]![ProductFKID]=[Products]![PKID]) AND ([Products]![EAN]="' + EAN + '")); Gruß
K-H
  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 15:23 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