Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Problem mit ADO (https://www.delphipraxis.net/109336-problem-mit-ado.html)

okoeller 28. Feb 2008 10:14

Datenbank: MS SQL Server 2000 SP3a • Zugriff über: ADO

Problem mit ADO
 
Hallo,

ich nutze TurboDelphi 2006 unter XP und MS SQL Server 2000 SP3a.

Unten stehender Code springt bei
Delphi-Quellcode:
 FAdoCommand.CommandText := Query;
raus und gibt den Fehler "Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse ... in Modul 'msvcrt.dll'. Schreiben von Adresse ... ' aufgetreten"

Ist die ADO Komponente auf dem xp-System kaputt oder warum läuft der Code auf einem Vista-System mit BDS2006 ???

Delphi-Quellcode:
procedure TAdoComponent.ErstelleParametrisiertenBefehl(Query: string);
begin
  FAdoCommand := TADOCommand.Create(nil);
  FAdoCommand.Connection := FAdoSteuerelement;
  FAdoCommand.CommandText := Query;
  FAdoCommand.CommandType := cmdText;
end;
SQL-Code:
select *,
(select max(sv.nummer) from
   kunde k
   join vorgang vor on (k.kunden_id = vor.kunden_id)
   join stand_vorgang sv on (sv.stand_vorgang_id = vor.stand_vorgang_id)
   where k.kunden_id = k1kunden_id
   and vor.kampagne_id = kamkampagne_id
   ) as max_svnummer,
   (select max(sv2.nummer) from
   kunde k
   join rel_kuka relkuka on (k.kunden_id = relkuka.kunden_id)
   join stand_vorgang sv2 on (sv2.kampagne_id = relkuka.kampagne_id)
   where k.kunden_id = k1kunden_id
   and relkuka.kampagne_id = kamkampagne_id) as max_kamsvnummer
   from
   kundenliste
where kamkampagne_id = :kampagne_id
Für hilfreiche Hinweise wäre ich sehr dankbar.

Gruß
Oliver

marabu 28. Feb 2008 12:18

Re: Problem mit ADO
 
Hallo Oliver,

was ist FADOSteuerElement?

Die bloße Zuweisung an CommandText dürfte den Fehler nicht verursachen.

Grüße vom marabu

okoeller 28. Feb 2008 12:35

Re: Problem mit ADO
 
Hallo marabu,

Delphi-Quellcode:
FADOSteuerElement:=TADOConnection;
Gruß
Oliver

sx2008 28. Feb 2008 19:32

Re: Problem mit ADO
 
Wenn du Daten vom SQL Server abrufen möchtest (*), musst du die Komponente TADOQuery oder TADODataset verwenden und die Open() Methode benützen!
*) das gilt für alle SELECT Anweisungen

Für alle anderen SQL-Anweisungen, die kein Dataset zurückliefen (INSERT, DELETE, UPDATE, CREATE TABLE, ...) ist TADOCommand das Richtige.


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