Discussion:
ODBC
(zu alt für eine Antwort)
Walter Sponagel
2010-04-19 10:15:23 UTC
Permalink
Hallo ich habe noch nie in Foxpro mit ODBC gearbeitet und soll jetzt auf
ODBC Daten zugreifen.
Aktuell von einem Kraftwerk, das Daten über eine ODBC Schnittstelle zur
Verfügung stellt. Im Moment werden die Daten in eine EXCEL Datei
geschrieben.

Hat jemand Infos wie ich Zugriff auf ODBC Daten bekomme. Aus der Hilfe werde
ich leider nicht so recht schlau wie ich da vorgehen muss.

Als Test möchte ich auf EXCEL Dateien über ODBC zugreifen. Wäre toll wenn da
jemand ein Beispiel für mich hat.

Danke Walter
tom knauf
2010-04-19 11:47:09 UTC
Permalink
Moin, moin

also im Prinzip :

1) Installiere die ODBC Treiber für das Zielsystem (falls bei Dir noch nicht
vorhanden)

2) Lege mit dem ODBC Administrator oder Ausführen - odbcad32.exe eine
Verbindung zur Datenquelle (SQL, Access, Excel,....) an, am besten unter
System-Dsn
( 64Bit Besonderheiten : bitte im Forum suchen (syswow\odbcad32 glaube ich)

3) Für erste Schritte lege eine Foxpro Datenbank an , erstelle mit dem
Assistenten eine Remoteview, dazu brauchst du die oben beschriebene
Verbindung und schon hast du lesenden / schreibenden Zugriff mit
Aktualisierung.
Die Remoteview kannst du unter Fox wie eine Tabelle öffnen (Use), zum
Zurückschreiben dient dann am Schluss Tableupdate() , das schreibt den
Inhalt der RV (lokale Daten) in die Datenquelle zurück.


Für Runaways :

Lies mal in der Hilfe (ab VFP8 glaube ich) unter Cursor Adapter und SQL
Passthrough
Hier ein Beispiel für Zugriff ohne Remote View auf Access, für Excel dürfte
nur der Connectionstring cconn anders lauten (connectstrings.com)

cMdb = cPath + "lohndaten.MDB"
cdbf = cPath + "lohndaten.DBF"
cconn = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" + cMdb +
";Exclusive=1;Uid=admin;Pwd="
nConn=Sqlstringconnect(cconn)
If nConn>0
=SQLExec(nConn,'Select * from tabellenname_in_mdb','dummy2')
Select dummy2
Copy To (cdbf) && soll gespeichert bleiben
SQLDisconnect(nConn)
Select dummy2
Use
Else
xfehler("Keine MDB Verbindung !")
Endif
Endif
Next
sele 0
use (cdbf)
brow

Hinweis
======
Reichlich Lesestoff gibt es in der DFPUG, Stichwort Client-Server.

Excel Daten würde ich immer per Automation auslesen, RV,.. ist m.E. nach
mehr zum Lesen / Schreiben von SQL-Serverdaten, hier mal ohne Errorhandling,
nur die Basics :

try
oExcel = Getobject(,'Excel.Application')
catch
oExcel = CreateObject("Excel.Application")
endtry
if vartype(oExcel) != "O"
return .F.
endif
oExcel.visible = .F.
oWorkbook = oExcel.Application.Workbooks.Open("C:\temp\test.xls")
for nZeile = 1 to 2 && siehe oExcel.ActiveCell.SpecialCells(11).Address()
for nSpalte = 1 to 7
cwert = oexcel.cells.value(nZeile, nSpalte)
next
next
oexcel.quit()
release oworkbook, oexcel


HTH

Grüße aus Hamburg
tom
Post by Walter Sponagel
Hallo ich habe noch nie in Foxpro mit ODBC gearbeitet und soll jetzt auf
ODBC Daten zugreifen.
Aktuell von einem Kraftwerk, das Daten über eine ODBC Schnittstelle zur
Verfügung stellt. Im Moment werden die Daten in eine EXCEL Datei
geschrieben.
Hat jemand Infos wie ich Zugriff auf ODBC Daten bekomme. Aus der Hilfe
werde ich leider nicht so recht schlau wie ich da vorgehen muss.
Als Test möchte ich auf EXCEL Dateien über ODBC zugreifen. Wäre toll wenn
da jemand ein Beispiel für mich hat.
Danke Walter
Walter Sponagel
2010-04-19 12:00:12 UTC
Permalink
Das mit ODBC auf EXCEL war nur zum üben wie das funktioniert.
Danke Walter
Walter Sponagel
2010-04-19 17:47:46 UTC
Permalink
Ich hatte mal irgendwo einen Einterag gelesen wie ich den Strin für den SQL
Connecht erstelle und dann abspeichere.
Weiß jemand wo ich das finde?

Danke Walter
Jan Bucek
2010-04-19 19:04:02 UTC
Permalink
Post by Walter Sponagel
Ich hatte mal irgendwo einen Einterag gelesen wie ich den Strin für den SQL
Connecht erstelle und dann abspeichere.
Weiß jemand wo ich das finde?
Danke Walter
http://www.connectionstrings.com/
Walter Sponagel
2010-04-19 19:25:20 UTC
Permalink
Danke für die Antwort.
Aber ich meinte mit Bordmitteln von VFP. Soviel ich mich errinere ging das
irgendwie über SQLstringConnect.
Matthias Kahlert
2010-04-19 19:33:52 UTC
Permalink
Post by Walter Sponagel
Danke für die Antwort.
Aber ich meinte mit Bordmitteln von VFP. Soviel ich mich errinere ging das
irgendwie über SQLstringConnect.
Genau das ist doch als Beispiel in dem Posting von Tom Knauf
enthalten... Da ist das Beispiel eben mit einem Access-Treiber drin,
andere Verbindungen (SQL Server, Oracle, Excel, was auch immer)
funktionieren vergleichbar.
--
Matthias
Walter Sponagel
2010-04-20 07:15:45 UTC
Permalink
Habs gefunden
Erst eine Verbindung mit pnCOMM=sqlstringconnect()aufbauen.
Dann mit _cliptext=sqlgetprop(pnCOMM,"ConnectString") den Connectstring in
die Zwischenablage legen.
tom knauf
2010-04-20 08:02:07 UTC
Permalink
Hallo,

wenn du eine RV angelegt hast, kannst du den String hinterher in den
Eigenschaften der Verbindung sehen
Eine ODBC Connection brauchst du aber trotzdem (für die RV)

Grüße
tom
Post by Walter Sponagel
Hallo ich habe noch nie in Foxpro mit ODBC gearbeitet und soll jetzt auf
ODBC Daten zugreifen.
Aktuell von einem Kraftwerk, das Daten über eine ODBC Schnittstelle zur
Verfügung stellt. Im Moment werden die Daten in eine EXCEL Datei
geschrieben.
Hat jemand Infos wie ich Zugriff auf ODBC Daten bekomme. Aus der Hilfe
werde ich leider nicht so recht schlau wie ich da vorgehen muss.
Als Test möchte ich auf EXCEL Dateien über ODBC zugreifen. Wäre toll wenn
da jemand ein Beispiel für mich hat.
Danke Walter
Lesen Sie weiter auf narkive:
Loading...