Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADOQuery.SQL.ADD Problem... Zugriffsverletzung (https://www.delphipraxis.net/84463-adoquery-sql-add-problem-zugriffsverletzung.html)

DerMike 17. Jan 2007 10:27

Datenbank: LDAP, SQL • Zugriff über: ADO

ADOQuery.SQL.ADD Problem... Zugriffsverletzung
 
Hallo,

ich habe jetzt schon wieder einen blöden Fehler.

Ich erstelle mir meine SQL Abfrage und gebe sie aus. Somit kann ich mit Sicherheit sagen, dass die Abfrage richtig ist.

Jetzt möchte ich diesen STRING SQL (SELECT * ....) in die TADOQuery Komponente schreiben.

Delphi-Quellcode:
ADOQuery1.SQL.Add(SQL);
Leider bekomme ich eine Zugriffsverletzung EAccessViolation bei diesem Vorgang.

Das hier funktioniert aber....
Delphi-Quellcode:
ADOQuery1.SQL.Clear;
Wenn ich den SQL-String händisch hineinschreibe funktioniert auch alles.

Kann mir jemand erklären, was Bernhard Geyer mit Datenbank zerschießen meinte???? http://www.delphi-forum.de/viewtopic.php?p=403855

lg

Mike

//EDIT
Habe wieder etwas neues probiert. Leider dieselbe Fehlermeldung

Delphi-Quellcode:
 
  ADOQuery := TADOQuery.Create(nil);
  ADOQuery.Active := false;
  ADOQuery.ConnectionString := frmMain.Funktion.GetLDAPConnectionString;
  SQLQuery := 'SELECT cn FROM ' + frmMain.Funktion.GetLDAPTableString('LDAP','Gesellschaft',frmMain.Funktion.Domaene) + ' where objectclass='
          + QuotedStr('contact') + ' and objectcategory=' + QuotedStr('user');
  ADOQuery.SQL.Add(SQLQuery);
Am Inhalt des SQLQuery Strings kann es nicht liegen. Egal, was ich reinschreiben möchte ich bekomme immer EAccesViolation als Fehler :(

f.siebler 17. Jan 2007 11:30

Re: ADOQuery.SQL.ADD Problem... Zugriffsverletzung
 
was ist mit der eigenschalft CommandText?

DerMike 17. Jan 2007 11:41

Re: ADOQuery.SQL.ADD Problem... Zugriffsverletzung
 
Gute Frage...

Diese Eigenschaft gibt es bei TADOQuery aber nicht..

f.siebler 17. Jan 2007 11:43

Re: ADOQuery.SQL.ADD Problem... Zugriffsverletzung
 
verdammt.... aber nen versuch wars wert :-)

mikhal 17. Jan 2007 12:44

Re: ADOQuery.SQL.ADD Problem... Zugriffsverletzung
 
Wenn du schon die Methode Add von TStrings verwendest, solltest du auch dafür sorgen, dass TStrings leer ist.

Also entweder mit der Methode Clear erst leeren:
Delphi-Quellcode:
  SQLQuery := 'SELECT cn FROM ' + frmMain.Funktion.GetLDAPTableString('LDAP','Gesellschaft',frmMain.Funktion.Domaene) + ' where objectclass='
          + QuotedStr('contact') + ' and objectcategory=' + QuotedStr('user');
  ADOQuery.SQL.Clear; <=== hier wird TStrings geleert!
  ADOQuery.SQL.Add(SQLQuery);
oder wenn du bereits einen vollständigen String hast, diesen direkt der Eigenschaft Text zuweisen:
Delphi-Quellcode:
SQLQuery := 'SELECT cn FROM ' + frmMain.Funktion.GetLDAPTableString('LDAP','Gesellschaft',frmMain.Funktion.Domaene) + ' where objectclass='
          + QuotedStr('contact') + ' and objectcategory=' + QuotedStr('user');
  ADOQuery.SQL.Text := SQLQuery; <=== hier einen String zuweisen
Grüße
Mikhal

DerMike 17. Jan 2007 18:31

Re: ADOQuery.SQL.ADD Problem... Zugriffsverletzung
 
Hallo,

ich glaube ich habe ein Lösung gefunden. Trotzdem weiß ich nicht warum mein Programm zu einem Fehler geführt hat, aber egal ....

Funktioniert NICHT
Delphi-Quellcode:
  ADOQuery := TADOQuery.Create(nil);
  ADOQuery.Active := false;
  ADOQuery.ConnectionString := frmMain.Funktion.GetLDAPConnectionString;
  SQLQuery := 'SELECT cn FROM ' + frmMain.Funktion.GetLDAPTableString('LDAP','Gesellschaft',frmMain.Funktion.Domaene) + ' where objectclass='
          + QuotedStr('contact') + ' and objectcategory=' + QuotedStr('user');
  ADOQuery.SQL.Add(SQLQuery);
Zuerst ADOQuery.SQL befüllen und DANACH erst den ConnectionString :) Keine Ahnung warum aber es funktioniert.

FUNKTIONIERT
Delphi-Quellcode:
 
  ADOQuery := TADOQuery.Create(nil);
  SQLQuery := 'SELECT cn FROM ' + frmMain.Funktion.GetLDAPTableString('LDAP','Gesellschaft',frmMain.Funktion.Domaene) + ' where objectclass='
          + QuotedStr('contact') + ' and objectcategory=' + QuotedStr('user');
  ADOQuery.SQL.Add(SQLQuery);
  ADOQuery.Active := false;
  ADOQuery.ConnectionString := frmMain.Funktion.GetLDAPConnectionString;


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:04 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