AGB  ·  Datenschutz  ·  Impressum  







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

Access: Datentypen in Kriterienausdruck unverträglich

Ein Thema von Flippo · begonnen am 25. Aug 2008 · letzter Beitrag vom 3. Sep 2008
Antwort Antwort
Flippo

Registriert seit: 26. Sep 2004
111 Beiträge
 
Delphi 2005 Personal
 
#1

Access: Datentypen in Kriterienausdruck unverträglich

  Alt 25. Aug 2008, 15:03
Datenbank: Access • Zugriff über: ADO
Hallo,

ich habe folgendes Problem. Ich lese mit der Funktion blubb Daten ein. Das erste einlesen funktioniert auch tadellos. Wenn ich diese Daten dann aber lösche und gleich danach wieder einlese, dann bekomme ich die Fehlermeldung: "Datentypen in Kriterienausdruck unverträglich."
Wenn ich nach dem löschen das Programm neu starte, dann bekomme ich die Fehlermeldung nicht.

Die anderen Beiträge die sich mit dieser Fehlermeldung beschäftigen haben mir alle nicht weitergeholfen, bei den meisten lags am Format des Datums, aber ich hab nur string und integer werte.
Delphi-Quellcode:
function Blubb(var1, var2: String): TStringList;
var
  id: integer;

begin
  result := TStringList.Create;
  self.myStoredProc.Parameters.Items[0].Value := var1;
  self.myStoredProc.Parameters.Items[1].Value := var2;
  self.myStoredProc.Prepared := true;
  self.myStoredProc.Open; //Hier kommt der Fehler
  self.myStoredProc.First;
  while not self.myStoredProc.Eof do begin
    id := self.blubb2(var1, 'STR', self.myStoredProc.Fields[2].asInteger);
    result.Add(self.myStoredProc.fields[1].asString + '=' + intToStr(id));
    self.myStoredProc.Next;
  end;
  self.myStoredProc.Close;
end;
Das ist die aufgerufene myStoredProc in der Access Datenbank:

SELECT te.id, tp.start_byte, ta.val
FROM (tp INNER JOIN ta ON tp.id=ta.p_id) INNER JOIN te ON te.id=ta.e_id
WHERE (tp.start_byte between 23 AND 30)
AND ta.val <> 0
AND te.id in ( SELECT te.id FROM (((tp INNER JOIN ta ON tp.id = ta.p_id)
INNER JOIN te ON te.id = ta.e_id)
INNER JOIN te ON tp.e_id = te.id)
where te.vers = var1 AND te.kennung = 34 AND tp.start_byte = 13 AND ta.val = var2)
ORDER BY te.id, tp.start_byte;

te.vers ist String
ta.val ist integer


Ich hoffe ihr könnt mit dieser Beschreibung etwas anfangen. Ich kann mir diesen Fehler einfach nicht erklären.

Gibt es eine Möglichskeit self.myStoredProc wieder auf die Standartwerte, die es zum Programmstart hat zu setzen? Denn wenn ich das Programm neu starte geht es ja ohne Fehlermeldung.

Danke an alle die sich daran probieren

MfG

flippo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Access: Datentypen in Kriterienausdruck unverträglich

  Alt 25. Aug 2008, 15:11
Brich die Abfrage mal in Teilabfragen auf
Markus Kinzler
  Mit Zitat antworten Zitat
Flippo

Registriert seit: 26. Sep 2004
111 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Access: Datentypen in Kriterienausdruck unverträglich

  Alt 25. Aug 2008, 15:57
werd ich mal probieren. Aber was bringt das dann, hast du eine Vermutung woran es liegen kann? Oder soll das der Fehlerfindung dienen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Access: Datentypen in Kriterienausdruck unverträglich

  Alt 25. Aug 2008, 15:58
So gehe ich immer bei fehlerhaften Abfragen vor
Markus Kinzler
  Mit Zitat antworten Zitat
Flippo

Registriert seit: 26. Sep 2004
111 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Access: Datentypen in Kriterienausdruck unverträglich

  Alt 25. Aug 2008, 16:04
Ich bin leider noch recht unerfahren was das ganze mit den Datenbanken angeht. Werde das bei nächster Gelegenheit mal so probieren und hoffe das ich was rausfinde. Wird bis dahin leider etwas(bis nächste Woche) dauern, ich meld mich dann wieder und hoffe das der Thread noch nicht eingeschlafen ist.

Falls jemand bis dahin noch einen heißen Tipp hat oder sieht woran es liegen könnte, wäre ich natürlich dankbar

MfG

flippo
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Access: Datentypen in Kriterienausdruck unverträglich

  Alt 25. Aug 2008, 16:57
Hallo Flippo,

die Fehlermeldung bezieht sich nicht auf den Rumpf deiner Stored Procedure, denn die funktioniert ja unter bestimmten Bedingungen. Es geht mehr um die Parameter. Die von der Komponente müssen genau mit denen aus der SP-Deklaration übereinstimmen - Richtung und Typ, evtl. auch Größe.

Folgende Vorgehensweise ist ratsam:

(1) TDAOStoredProc über den Object Inspector konfigurieren.
(2) Insbesondere die Parameter korrekt typisieren.
(3) Prepared auf True setzen

Speziell das mehrfache Setzen von Prepared auf True ist unnötig. Es passiert nach dem ersten Mal auch nichts mehr, weil der VCL Code unsinnige Änderungen an Properties außer Acht lässt.

Hier noch ein paar Denkanstöße:

Delphi-Quellcode:
procedure TDataModel.GetMapping(const param1, param2: string; strings: TStrings);
var
  id: Integer;
begin
  with myStoredProc do
  begin
    Parameters.ParamValues['param1'] := param1;
    Parameters.ParamValues['param2'] := param2;
    Open;
    while not Eof do
    begin
      id := GetId(param1, 'STR', FieldByName('TheValue').AsInteger);
      strings.Values[FieldByName('TheName')] := IntToStr(id);
      Next;
    end;
    Close;
  end;
end;
Getippt und nicht getestet.

Freundliche Grüße
  Mit Zitat antworten Zitat
Flippo

Registriert seit: 26. Sep 2004
111 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Access: Datentypen in Kriterienausdruck unverträglich

  Alt 25. Aug 2008, 17:21
Ok, thx
  Mit Zitat antworten Zitat
Flippo

Registriert seit: 26. Sep 2004
111 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Access: Datentypen in Kriterienausdruck unverträglich

  Alt 3. Sep 2008, 12:11
Vielen Dank!

Hab das Problem Heute dank, eurer Tipps lösen können.

So wie die Parameter typisiert waren, war es nicht überraschend, dass beim zweiten Einlesen eine Fehlermeldung kam. Sonderbar ist, das es überhaupt beim ersten Einlesevorgang funktioniet hat

Also bis zum nächsten mal,

flippo
  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 19:59 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