Autor Beitrag
Dieter Hammerla
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 17.04.03 15:28 
Hallo,

ich habe Windows2000 und Office2000 installiert und möchte mit Delphi3 über ODBC auf Excel2000 zugreifen. Ich habe mehrere Beschreibungen dazu gelesen und ausgeführt. Es geht fast alles gut, bis auf die letzte Aktion. Wenn ich den Status des Tabellenobjekts auf Active=TRUE setze kommt die Fehlermeldung:
"Ihre Anwendung ist für die Benutzung dieses Treibers nicht geeignet."

Ich habe den Verdacht, dass mein altes Delphi3 nicht mit WINDOWS 2000 über ODBC zusammenpasst. Kann mir diesen Verdacht jem. bestätigen?

Danke und viele Grüße
Dieter Hammerla
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Do 17.04.03 18:35 
eins Vorweg: Ich kenn Delphi 3 überhaupt nicht, mein Hinweis wird also warscheinlich für die Katz sein.

Aber woran ich jetzt zuerst denke: Liegts an den ODBC-Treibern? Weil die sind doch eigentlich die Schnittstelle zu den Datenbanken, oder?

mfg
Shaitan
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 21.04.03 22:06 
Hi Dieter,

2 Dinge fallen mir da ein:

1.)
Ich galube nicht das auf Excel2000 über ODBC zugegriffen werden kann, wäre mir neu und würde nicht meine Hand dafür ins Feuer legen, aber ich denke das geht nicht.

2.)
Du kannst aber auf Excel2000 über ActiveX zugreifen. Das habe ich schon gemacht. Geht relativ einfach. Hier ein Beispiel:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
...
var Excel: Variant;
    cell: String;
...
Excel := CreateOleObject('excel.application');
Excel.Visible := True   //Macht das Excel-Fenster sichtbar
Excel.Worksheets[1].Activate;  //Um ein Aktive Worksheet festzulegen
cell := Excel.ActiveSheet.Cells[1,5].Value;  //Gibt den Wert der Zelle x: 1, y: 5 zurück
Excel.DisplayAlerts := false;    //Deaktiviert Nachfrage zum Speichern beim Beenden
Excel.quit;   //Beendet Excel (Wichtig sonst bleibt es immer offen im Hintergrund)


Für mehr mußte Du mal die Hilfe für Excel VBA nachsehen, ist eigentlich dann genau gleich. Manchmal muß man ein wenig Kobeln, wenn man noch nichts mit VBA gemacht hat.
Das Problem ist nur, ich weis nicht ob Delphi 3 den Variablen-Typen Variant exitiert. Vielleicht geht auch ein anderer Typ, bin mir da nicht so sicher, glaube aber nicht. Man kann übrigens so auch auf Word oder Outlook zugreifen oder was anderes von Office.

MfG Shaitan
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Di 22.04.03 10:50 
Hallo,
Shaitan hat folgendes geschrieben:
1.)
Ich galube nicht das auf Excel2000 über ODBC zugegriffen werden kann, wäre mir neu und würde nicht meine Hand dafür ins Feuer legen, aber ich denke das geht nicht.

es geht per ADO über die Jet Engine. Zu ODBC kann ich nichts sagen. Ich konneckt auf Excel Dateien mit diesem Connection String, das klappt (%s steht für Pfad und Dateinamen). Da fehlt also nur noch eine ADO Komponente für Delphi 3. Die sollte zu finden sein.
Zitat:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties= "Excel 8.0;HDR=Yes";Persist Security Info=False;Persist Security Info=False


Gruß
Klabautermann
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Di 22.04.03 11:01 
Hi!

Klabautermann hat folgendes geschrieben:
es geht per ADO über die Jet Engine.


Die JET-Engine ist nur für Access-Datenbanken.

Cu,
Udontknow
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Di 22.04.03 11:07 
Hallo,
Udontknow hat folgendes geschrieben:
Die JET-Engine ist nur für Access-Datenbanken.

gucke dir meinen Connsction String noch mal an:
Zitat:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties= "Excel 8.0;HDR=Yes";Persist Security Info=False;Persist Security Info=False


Hiermit greife ich wie gesagt auf Excel Dateien zu, und fahre dort CREATE TABLE und INSERT INTO Querys (ist eine Export Funktion). In einem andern Projekt greift ein Kollegfe nach der selben Methode auch lesend drauf zu.

Gruß
Klabautermann


Zuletzt bearbeitet von Klabautermann am Di 22.04.03 11:11, insgesamt 1-mal bearbeitet
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Di 22.04.03 11:10 
Oh, hast recht! Wieder was gelernt.
Habe mir nur mal den String aufbauen lassen, dort kann man ja nur Access-DBs auswählen...

Cu, :)
Udontknow
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Di 22.04.03 11:16 
Hallo,
Udontknow hat folgendes geschrieben:
dort kann man ja nur Access-DBs auswählen...

stimmt. Ich habe den String von besagten Kollegen übernommen, keine Ahnung wie der drauf gekommen ist, aber es klappt :mrgreen:.

Gruß
Klabautermann