Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Server Access problem (https://www.delphipraxis.net/145779-sql-server-access-problem.html)

AnyKey 8. Jan 2010 08:21


SQL Server Access problem
 
Hi,

ich habe folgendes Problem: ich verbinde mich über die SQL Server Access Komponenten in Delphi auf eine SQL Server Datenbank und muss auch abfragen auf die Tabellen in der Datenbank machen. Die verbindung kommt scheinbar zu stande, nur wenn die Abfrage startet kommt eine Fehlermeldung, die folgendermaßen aussieht: Im Projekt bla.exe ist eine Exception der Klasse EMSERror aufgetreten. Meldung: 'Ungültiger Objektname TabellenName'.'. Prozess....

Hat vielleicht einer ne Idee wie der Fehler zustande kommt?

Auszug aus dem Connect:
Delphi-Quellcode:
MSConnection1.Server := server;
MSConnection1.Password := password;
MSConnection1.Username := Username;
MSConnection1.Connect;
Abfrage auf die Datenbank:
Delphi-Quellcode:
MSQuery1.SQL.Clear;
MSQUery1.SQL.Add('SELECT COUNT (*) FROM '+Username+'.'+Tabelle);
MSQuery1.Active := true;
ColumnFeatures.RowsInTable := MSQuery1.Fields[0].Value;
funktioniert genauso wenig wie:
Delphi-Quellcode:
MSQuery1.SQL.Clear;
MSQUery1.SQL.Add('SELECT COUNT (*) FROM '+Tabelle);
MSQuery1.Active := true;
ColumnFeatures.RowsInTable := MSQuery1.Fields[0].Value;
Hoffe es hat jemand eine Idee und kann mir helfen! Schlag mich damit schon ne zeit rum und hab auch schon Google bemüht, aber nichts passendes gefunden, auch nicht zum Fehler.

Gruß
AnyKey

taveuni 8. Jan 2010 08:34

Re: SQL Server Access problem
 
Hallo,

Hast Du schon mal mit dem Debugger die Variablen angeschaut?
Die Fehlermeldung: 'Ungültiger Objektname TabellenName'.'. klingt nicht danach.
Funktioniert die Abfrage in einem Frontend?
Was für eine Verbindung benützt Du (ADO?)

AnyKey 8. Jan 2010 09:02

Re: SQL Server Access problem
 
Debuggen hab ich schon versucht, bin aber zu keinem Ergebnis gekommen. Wenn ich im Toad for SQL Server die Abfrage eingebe funktioniert es einwandfrei. Abfrage: SELECT COUNT(*) FROM Tabelle
Ich benutze die SQL Server Access komponenten (MSAccess) sind das vielleicht die falschen? sollte ich besser die ADO benutzen?

AnyKey 8. Jan 2010 10:01

Re: SQL Server Access problem
 
Wäre echt super wenn jemand ne antwort hätte, ich hab keinen Plan wie ich das hinbekommen soll, oder was ich falsch mache. Wie müsste denn der ConnectionString bei der ADO Komponente aussehen wenn ich mich auf eine nicht lokale Datenbank verbinden will? Aber viel wichtiger, wieso kann ich mich mit den anderen Komponenten verbinden und bekomme aber Fehler bei der Abfrage? Ich denke mal das müsste doch eigentlich so funktionieren, kann mir keiner helfen?

Gruß
AnyKey

taveuni 8. Jan 2010 10:11

Re: SQL Server Access problem
 
Vielleicht weil wir keine Ahnung haben was das für eine Komponente sein soll?
Was sind denn die SQL Server Access Komponenten?
Und was heisst "Debuggen hab ich schon versucht, bin aber zu keinem Ergebnis gekommen"?
Welchen Wert siehst Du denn in den Variablen Username und Tabelle?
Die Fehlermeldung scheint ja eindeutig zu sein.

AnyKey 8. Jan 2010 10:22

Re: SQL Server Access problem
 
Also
1. scheiße das keiner ahnung hat, das is echt doof... :(
2. Ich war der Meinung diese Komponenten wären für eine SQL Server Datenbank, da sie ja schließlich SQL Server Access heißen... wenn allerdings jemand ne idee hat welche Komponenten man (auch außer ADO) noch nehmen könnte bin ich dafür auch offen.
3. Das mit dem Debugger heißt, das in der Variablen genau der Wert steht der auch drin stehen soll, der Name der Tabelle.

nahpets 8. Jan 2010 10:25

Re: SQL Server Access problem
 
Hallo,
Zitat:

Zitat von AnyKey
Wäre echt super wenn jemand ne antwort hätte, ich hab keinen Plan wie ich das hinbekommen soll, oder was ich falsch mache. Wie müsste denn der ConnectionString bei der ADO Komponente aussehen wenn ich mich auf eine nicht lokale Datenbank verbinden will? Aber viel wichtiger, wieso kann ich mich mit den anderen Komponenten verbinden und bekomme aber Fehler bei der Abfrage? Ich denke mal das müsste doch eigentlich so funktionieren, kann mir keiner helfen?

Gruß
AnyKey

nutze die ADO-Komponenten. Die Verbindung erstellst Du am besten über TADOConnection. Den Connectionstring kannst Du Dir im Objektinspektor entsprechend per Dialog zusammen bauen lassen.
Der Verbindungsstring könnte dann z. B. so aussehen:
Code:
Provider=MSDASQL.1;Persist Security Info=False;Data Source=WebWatcher;Extended Properties="DSN=WebWatcher;";Initial Catalog=WebWatch
Je nach Datenbank aber auch ganz anders.

AnyKey 8. Jan 2010 10:34

Re: SQL Server Access problem
 
Also ich habe jetzt noch eine Showmessage eingebaut und mir mal anzeigen lassen was überhaupt als Abfrage geschickt wird und welch überraschung, es ist genau die selbe Abfrage wie wenn ich sie im Toad mache. :(

Zu den ADO Komponenten, wie übergebe ich denn da dann Passwort und benutzer und alles? Gibt es noch andere Komponenten mit denen ich mich auf diese Datenbank verbinden kann?

nahpets 8. Jan 2010 10:49

Re: SQL Server Access problem
 
Hallo,

die Anmeldung geht über den Connectionstring oder über die Konfiguration des ODBC-Treibers. Da gibt es viele Möglichkeiten.
Alternativ bei der TAdoConnection LoginPrompt auf True setzen, dann per Dialog oder auch in der Ereignisroutine OnLogin.

Deine Fehlermeldung sieht aber so aus, als würden dem Benutzer die Rechte für den Zugriff auf die Tabelle fehlen. Nutzt Du im Programm und in Toad die gleiche Anmeldung? Greifst Du auch garantiert auf die gleiche Datenbank zu (nicht lachen, so 'nen Fehler hab' ich schon öfter gehabt, wenn es mehrere Testsysteme gibt, die fast identisch heißen und auch sonst fast identisch sind...)?

AnyKey 8. Jan 2010 11:06

Re: SQL Server Access problem
 
Ok, den Fehler hab ich behoben ^^ war eigentlich nichts großes, aber hat halt doch alles aufgehalten. -__-
Der Fehler lag darin, dass die Abfrage wohl so aussehen muss: SELECT COUNT(*) FROM Username.dbo.Tabellenname
das ist alles :roll: hätte ich auch früher schon drauf kommen können, hab ich gerade durch zufall rausgefunden.

Jetzt hab ich noch einen anderen Fehler, aber ich denke den bekomm ich gelöst.

Danke für eure Hilfe!!

Gruß und schönes Wochenende
AnyKey


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:57 Uhr.
Seite 1 von 2  1 2      

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