![]() |
Datenbank: Excel/Access • Version: 2003 • Zugriff über: ADO/ODBC
SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Moin, moin,
weiß irgendjemand, ob und wie man ein SQL-Script formulieren muss, um bei einer SQL-Abfrage via ADO-Komponente, Verbindung via ODBC, auf eine EXCEL-Tabelle zugreifen zu können? Das von mir verwendete Script arbeitet mit Access einwandfrei (allerdings JET4). Das SQL Script: SELECT [Standbeschriftung.ID] AS ID, [Standbeschriftung.AdressSortierung] AS AdressSortierung, [Standbeschriftung.Halle] AS Halle, [Standbeschriftung.StandNr] AS StandNr, [Standbeschriftung.Blendentext] AS Blendentext, [Standbeschriftung.Firmensitz] AS Firmensitz, [Standbeschriftung.Standleistung] AS Standleistung, [Standbeschriftung.OAS] AS OAS FROM [Standbeschriftung] WHERE Standbeschriftung.Halle LIKE :Halle Verwende ich ein Wildcard-String z.B. '%1%' oder ähnlich anstelle des Parameters :Halle, mault die ADO-Komponente nicht bei der Abfrage der EXCEL-Tabelle. Und sonst erscheint immer die fiese Fehlermeldung: Ein Parameterobjekt ist nicht ordnungsgemäß definiert. Inkonsistente oder unvollständige Informationen wurden angegeben. Und das passiert, nachdem das SQL-Script an die Komponente übergeben und ExecSQL ausgeführt wurde. Muss oder kann man im Vorwege die Params vorbereiten um z.B. den DataType vorzugeben? Bzw. welchen DataType muss ich für die Excel-Tabelle ansetzen? Oder wie, oder was, oder geht das mit der Paramterübergabe mit Excel nicht. Help, help, please... |
AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Auf Excel über ADO und ODBC? Komplizierter geht nicht mehr?
Wenn schon dann über ADO und der JET-Engine "direkt" drauf. Dürfte weniger Probleme verursachen als den Umwegü ber ODBC zu gehen. |
AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Liste der Anhänge anzeigen (Anzahl: 1)
Würde ich ja gerne machen. Aber wie kann ich das mit den Ado-Komponenten einstellen?
Über Jet 4.0 OLE kann ich nur Access-DB ansprechen...:? |
AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Passenden Connectionstring aufbauen:
![]() |
AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Das hilft mir leider nicht weiter.
Es lässt sich ja eine Verbindung zu Excel aufbauen. Das löst aber immer noch nicht das Problem... |
AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Die Ado Komponente meckert, weil sie den Parameter :Halle nicht auflösen kann. Diese Parameter muss man bei geschlossener Query zunächst einmal setzen.
Ich gehe dabei folgendermaßen vor:
Delphi-Quellcode:
Anschließend sollte Adoquery nicht mehr meckern.
var
param : Tparameter; begin with abfrage do begin Close; SQL.clear; SQL.add(sqlstring); param := Parameters.Parambyname('Halle'); param.Datatype := ftstring; param.value := 'Die Halle'; execsql; end; end; Im übrigen ist dein SQL String etwas lang geraten. Es reicht völlig die folgende Abfrage: Select ID, AdressSortierung,... from Standbeschriftung where Halle like :Halle; Ich würde jedoch den Parameter :Halle durch einen anderen Ausdruck ersetzen. Es könnte sein, dass die Komponente durch die zweimalige Verwendung desselben Wortes etwas durcheinander kommt. Gruß Kompi |
AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Zitat:
erst mal vielen Dank für deine Antwort. Ist nachvollziehbar, was du geschrieben hast. Ahnte ich ja schon. Leider muss ich mir dann allerdings für meinen Bedarf programmiertechnisch etwas ausdenken, um den Datentyp vorher herauszubekommen. Sprich: SQL-Script vom Programm analysieren lassen und dann die ermittelten Daten an die Query-Komponente übergeben. Danach erst SQLExec.... Dann wird ich mal loslegen... |
AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
SQLExec? Ein
Delphi-Quellcode:
wäre hier wohl richtiger?
Query.Open
Gruß K-H |
AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Zitat:
|
AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Zitat:
Hmmm... Wohl kaum. Erst SQLExec und danach Open... Das ist die Reihenfolge. Zitat:
Ergo: Das Programm muss das dann wissen. :wink: Und das klappt jetzt. War ein bissel getippe, um alle möglichen Variationen eines SQL-Scriptes zu berücksichtigen... aber... funzt! :-D |
AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Zitat:
Open macht exaktemente das absolut gleiche wie ExecSQL mit einem Unterschied, bei Open wird auch eine Datenmenge erwartet, bei ExecSQL eben nicht. Ein Blick in die Dokumentation ist da wohl fällig ![]() ![]() Schönes Zitat aus der Doku Zitat:
Für SQL-Code gibt es auch Code-Tags [ CODE="SQL" ] sieht dann gleich viel hübscher aus
SQL-Code:
SELECT
[Standbeschriftung.ID] AS ID, [Standbeschriftung.AdressSortierung] AS AdressSortierung, [Standbeschriftung.Halle] AS Halle, [Standbeschriftung.StandNr] AS StandNr, [Standbeschriftung.Blendentext] AS Blendentext, [Standbeschriftung.Firmensitz] AS Firmensitz, [Standbeschriftung.Standleistung] AS Standleistung, [Standbeschriftung.OAS] AS OAS FROM [Standbeschriftung] WHERE Standbeschriftung.Halle LIKE :Halle |
AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Zitat:
Ich benötige aber in meinem Fall keine Datenmenge vom Query. Für mich ist der Aufruf von ExecSQL zunächst nur zur Tabellenstrukturanalyse notwendig, bzw. um auch ggf. eine Exception auszulösen. Erst im späteren Verlauf des Programms benötige ich eine Datenmenge. Zitat:
Mein Programm generiert das SQL-Script auf Anforderung. Das sieht dann nicht immer so schick aus, erfüllt aber seinen Zweck. Von mir war es nur reine Faulheit, das ganze etwas schnuckeliger zu gestalten. Copy und Paste und Tschüß... Sorry:oops: |
AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Zitat:
![]() |
AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz