AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein ADO Fehler beim laden von CommandText
Thema durchsuchen
Ansicht
Themen-Optionen

ADO Fehler beim laden von CommandText

Ein Thema von hesch21 · begonnen am 4. Mär 2014 · letzter Beitrag vom 4. Mär 2014
Antwort Antwort
hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#1

ADO Fehler beim laden von CommandText

  Alt 4. Mär 2014, 11:00
Hat mir bitte jemand einen Blindenstock?
ich suche nun seit Stunden einen vermutlich absolut dämlichen Fehler und komme nicht dahinter. Folgender Code:
Code:
             Memo1.Lines.Clear;
             Memo1.Lines.Add('SELECT sAMAccountName, givenName, sn, displayName, physicalDeliveryOfficeName, telephoneNumber, mail, facsimileTelephoneNumber, department, company, profilePath');
             Memo1.Lines.Add('FROM ''LDAP://' + OUTxt + 'DC=' + Edit4.Text + ',DC=' + Edit5.Text + '''');
             hit := 'WHERE objectClass=''user'' and objectCategory=''person''';
             if Edit2.Text <> '' then
                hit := hit + ' and sAMAccountName=''' + Edit2.Text + '''';
             Memo1.Lines.Add(hit);
             ADODataSet1.CommandText := '';
             ADODataSet1.CommandText := Memo1.Text;
             ADODataSet1.Open;
Auf der vorletzten Zeile bekomme ich eine Exception C000000005 Access Violation.
ADODataSet1 ist sicher noch nicht geöffnet und habe sicherheitshalber auch mal versucht, die ganze Connection erst nach diesem Code zu öffnen. Der CommandType von ADODataSet1 ist cmdText. Und wenn ich in etwa das, was da im Memo aufbereitet wird, direkt ins ADODataSet1.CommandText pflanze und die dritt- und vorletzte Codezeile auskommentiere, funktioniert die Geschichte. Also an der Länge des SQL-Statements sollte es eigentlich auch nicht liegen.

Wer hat bitte den gesuchten Blindenstock?
Heinz Schneider
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: ADO Fehler beim laden von CommandText

  Alt 4. Mär 2014, 11:08
Ich würde sehr zur Verwendung von Parametern raten.
Markus Kinzler
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: ADO Fehler beim laden von CommandText

  Alt 4. Mär 2014, 11:19
Offensichtlich erzeugst du mit Add LineBreaks in deinem Memo. CommandText erwartet aber keine LineBreaks. Hier könnte der Fehler liegen.

Wieso stellst du den SQL-Text nicht gleich in CommandText zusammen, wieso der Umweg über das Memo? Und wieso weist du dem CommandText erst einen leeren String zu? Das macht doch keinen Sinn!
  Mit Zitat antworten Zitat
hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#4

AW: ADO Fehler beim laden von CommandText

  Alt 4. Mär 2014, 11:44
Hallo mkinzler
ja, ist nicht sehr schön, dass da so ziemlich viel fest verdrahtet ist, sollte aber bei diesem Fehler keinen Einfluss haben. Wenn da ein Wert falsch wäre, dürfte erst beim Open ein Fehler kommen.

Hallo Perkau
Deine Aussage stimmt nicht. Ich kann problemlos im CommandText-Parameter des ADODataSet Multiline erfassen. Siehe angefügter ScreenShot.
Der Umweg über das Memo ist darin begründet, dass dem User das SQL-Statement angezeigt werden muss (und deshalb auch die Multilines).
Den CommandText auf blank setzen kommt von meinem 200'000 Versuchen her, dem Fehler auf die Schliche zu kommen, macht aber tatsächlich keinen Sinn.

Ich habe es übrigens inzwischen noch versucht, indem ich das Memo zeilenweise in den CommandText geladen habe, einmal mit und einmal ohne #13#10 am Ende jeder Zeile. Der Effekt ist derselbe. Bereits beim Laden der ersten MemoZeile bekomme ich die Exception.
Miniaturansicht angehängter Grafiken
delphi.jpg  
Heinz Schneider
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: ADO Fehler beim laden von CommandText

  Alt 4. Mär 2014, 12:04
Hallo Perkau
Deine Aussage stimmt nicht. Ich kann problemlos im CommandText-Parameter des ADODataSet Multiline erfassen. Siehe angefügter ScreenShot.
Der Umweg über das Memo ist darin begründet, dass dem User das SQL-Statement angezeigt werden muss (und deshalb auch die Multilines).
Den CommandText auf blank setzen kommt von meinem 200'000 Versuchen her, dem Fehler auf die Schliche zu kommen, macht aber tatsächlich keinen Sinn.
Das war eine Verwechslung: Ich hatte gedanklich eine Ado-Connection vor Augen, obwohl in deinem Post doch ganz deutlich AdoDataset steht. Sorry
Mich wundert in deiner geposteten Grafik, daß dort keine Tabellen und Felder zur Auswahl stehen. Ist vielleicht die Connection nicht zugewiesen? Wenn ich ein Ado-Dataset einrichte, finde ich im Anweisungstext-Editor immer alle in der verbundenen Datenbank existierenden Tabellen mit ihren jeweils verfügbaren Feldern vor (siehe angehängte Grafik).

Ich habe es übrigens inzwischen noch versucht, indem ich das Memo zeilenweise in den CommandText geladen habe, einmal mit und einmal ohne #13#10 am Ende jeder Zeile. Der Effekt ist derselbe. Bereits beim Laden der ersten MemoZeile bekomme ich die Exception.
Das kann ich hier im Augenblick nicht nachvollziehen, obwohl ich auch gerade mit Ado arbeite. Bei mir wird die Zeile, in welcher ich einem Dataset einen CommantText zuweise, anstandslos ausgeführt, auch wenn in diesem Dataset das Property Connection nicht zugewiesen wurde.

Allerdings verwende ich meist Queries statt Datasets. Dort wird der SQL-Befehl im Property SQL abgelegt.

Übrigens: Mein Nick lautet Perlsau, nicht Perkau ...
Miniaturansicht angehängter Grafiken
anweisungstext-editor.jpg  
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: ADO Fehler beim laden von CommandText

  Alt 4. Mär 2014, 12:11
Der Umweg über das Memo ist darin begründet, dass dem User das SQL-Statement angezeigt werden muss (und deshalb auch die Multilines).
Aber kannst du nicht trotzdem das Statement im CommandText zusammen bauen und das dann am Ende dem Memo zuweisen? Wenn das doch angeblich klappt...
Ralph
  Mit Zitat antworten Zitat
hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#7

AW: ADO Fehler beim laden von CommandText

  Alt 4. Mär 2014, 12:30
Sorry für den Verschreiber bei deinem Nick
Da ich Ado nur für den Zugriff über LDAP auf das Active Directory benötige, habe ich gar keine 'wirkliche' Datenbank mit Tabellen und Feldern. Respektive, da ist was ganz anderes hinten dran (TurboDB).

Was ich aber eben erst jetzt festgestellt habe, ist die Tatsache, dass die Exception nur unter die IDE auftaucht. Wenn ich das Programm als EXE laufen lassen, passiert nichts. Und auch unter der IDE wird der Befehl ausgeführt!!!! Ich habe keine Ahnung, was das soll, aber für den Moment habe ich mich lange genug mit etwas herum geschlagen, was eigentlich funktioniert.
Heinz Schneider
  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:42 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