Hallo, Wolfgang -
so mache ich es:
Code: Alles auswählen
oConX := SQLConnection():new()
cLine := "Driver={" + SQLUGetDriverName("EXCEL", oConX) + "};ReadOnly=0;MaxScanRows=0;FirstRowHasNames=1;FIL=excel 8.0;DBQ=" + cXFile + ";"
IF !oConX:driverConnect(NIL, cLine)
ConfirmBox(, "Could not connect to Excel subsystem (ODBC)", "Error", XBPMB_OK, XBPMB_INFORMATION)
RETU(.F.)
ENDIF
SQLUGetDriverName() holt mir aus der Liste der installierten Treiber den (ersten) Treiber raus, der "EXCEL" im Namen hat. cXFile ist der Name der Excel-Datei, die zu öffnen ist.
Das ist übrigens die CONNECT-String Methode, die ich vorziehe, da keine DSN vorhanden sein muss.
So erstelle ich dann ein Arbeitsblatt mit dem Namen OverView:
Code: Alles auswählen
cLine := "CREATE TABLE Overview (Area VARCHAR, Record FLOAT, Findings VARCHAR)"
oCur1 := SQLSelect():new(cLine)
oCur1:execute()
Und so schreibe ich einen Satz in das SQLSelect():
Code: Alles auswählen
aSet := {"BaseHist", nBaseRecs, ""}
oCur1:append()
oCur1:recordPut(aSet)
oCur1:updateRow()
Das ist der Quelltext für SQLUGetDriverName():
Code: Alles auswählen
#DEFINE FALSE .F.
#DEFINE TRUE .T.
#INCLUDE "Xbp.CH"
#PRAGMA Library("SQLXPP.LIB")
FUNCTION SQLUGetDriverName(cDriver, oConn)
Local lCreated, aList, nLen, nI, cLook4, cName
cDriver := Upper(cDriver)
cName := ""
lCreated := FALSE
IF oConn == NIL
oConn := SQLConnection():new()
lCreated := TRUE
ENDIF
aList := oConn:getDrivers()
nLen := Len(aList)
FOR nI := 1 TO nLen
cLook4 := Upper(aList[nI, 1])
IF At(cDriver, cLook4) > 0
cName := aList[nI, 1]
EXIT
ENDIF
NEXT
IF lCreated
oConn:destroy()
ENDIF
RETURN (cName)
Weitere Fragen?