AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL-Abfrage in Excel-Tabelle via ADO mit Parameter
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Abfrage in Excel-Tabelle via ADO mit Parameter

Ein Thema von humbuck · begonnen am 19. Dez 2014 · letzter Beitrag vom 22. Dez 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von humbuck
humbuck

Registriert seit: 26. Nov 2014
Ort: BW
65 Beiträge
 
Delphi XE4 Professional
 
#1

SQL-Abfrage in Excel-Tabelle via ADO mit Parameter

  Alt 19. Dez 2014, 17:05
Datenbank: Excel/Access • Version: 2003 • Zugriff über: ADO/ODBC
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...
Jörch
Wissen ist Macht!
Wenn man nix weiß, muss man halt nur wissen, wo man nachschlagen muss.
Ergo: Ich weiß nix - macht nix.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter

  Alt 19. Dez 2014, 17:17
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von humbuck
humbuck

Registriert seit: 26. Nov 2014
Ort: BW
65 Beiträge
 
Delphi XE4 Professional
 
#3

AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter

  Alt 19. Dez 2014, 17:41
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...
Miniaturansicht angehängter Grafiken
ado1.jpg  
Jörch
Wissen ist Macht!
Wenn man nix weiß, muss man halt nur wissen, wo man nachschlagen muss.
Ergo: Ich weiß nix - macht nix.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter

  Alt 19. Dez 2014, 17:48
Passenden Connectionstring aufbauen: http://www.connectionstrings.com/excel/
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von humbuck
humbuck

Registriert seit: 26. Nov 2014
Ort: BW
65 Beiträge
 
Delphi XE4 Professional
 
#5

AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter

  Alt 19. Dez 2014, 18:05
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...
Jörch
Wissen ist Macht!
Wenn man nix weiß, muss man halt nur wissen, wo man nachschlagen muss.
Ergo: Ich weiß nix - macht nix.
  Mit Zitat antworten Zitat
kompi

Registriert seit: 27. Apr 2012
Ort: Duisburg
55 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter

  Alt 20. Dez 2014, 07:54
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:
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;
Anschließend sollte Adoquery nicht mehr meckern.

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
Detlef Schmitz
  Mit Zitat antworten Zitat
Benutzerbild von humbuck
humbuck

Registriert seit: 26. Nov 2014
Ort: BW
65 Beiträge
 
Delphi XE4 Professional
 
#7

AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter

  Alt 21. Dez 2014, 03:14
Die Ado Komponente meckert, weil sie den Parameter :Halle nicht auflösen kann. Diese Parameter muss man bei geschlossener Query zunächst einmal setzen.
...
Hallo Kompi,

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...
Jörch
Wissen ist Macht!
Wenn man nix weiß, muss man halt nur wissen, wo man nachschlagen muss.
Ergo: Ich weiß nix - macht nix.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter

  Alt 21. Dez 2014, 07:56
SQLExec? Ein Query.Open wäre hier wohl richtiger?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#9

AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter

  Alt 21. Dez 2014, 12:09
Sprich: SQL-Script vom Programm analysieren lassen und dann die ermittelten Daten an die Query-Komponente übergeben.
Woher bekommst Du den die Query-Anweisung? Wenn das dynamisch zusammengebaut ist, weiss der Zusammenbauer ja, was für ein Datentyp der Parameter haben muss.
  Mit Zitat antworten Zitat
Benutzerbild von humbuck
humbuck

Registriert seit: 26. Nov 2014
Ort: BW
65 Beiträge
 
Delphi XE4 Professional
 
#10

AW: SQL-Abfrage in Excel-Tabelle via ADO mit Parameter

  Alt 21. Dez 2014, 20:26
SQLExec? Ein Query.Open wäre hier wohl richtiger?


Hmmm... Wohl kaum. Erst SQLExec und danach Open... Das ist die Reihenfolge.

Woher bekommst Du den die Query-Anweisung? Wenn das dynamisch zusammengebaut ist, weiss der Zusammenbauer ja, was für ein Datentyp der Parameter haben muss.
Der 'Zusammenbauer' weiß das vielleicht... . Der brauch dann aber kein Script mit Parameterübergabe. Das brauch nur der, der es nicht weiß. Und der darf dann nicht im Script rumpfuschen.
Ergo: Das Programm muss das dann wissen. Und das klappt jetzt. War ein bissel getippe, um alle möglichen Variationen eines SQL-Scriptes zu berücksichtigen... aber...

funzt!
Jörch
Wissen ist Macht!
Wenn man nix weiß, muss man halt nur wissen, wo man nachschlagen muss.
Ergo: Ich weiß nix - macht nix.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:51 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