Declare LVODBC_DSN%,LVODBC_DSN$,LVODBC_TAB$,LVODBC_AnzS%,LVH&,C$
C$=CHR$(34)
Start
Dim$ 64 maximal 64Spalten pro Listview
SQLSETDEL ;
SQLSETNULL
Konvertiert das Datum ins Datenbankformat
Proc LVODBC_DATUM
Parameters Datum$
Datum$=#+Translate$(Datum$,.,/)+#
Return Datum$
EndProc
#####################################################
SetODBCSpalten
Fülle Liste mit Typen der Spalten
S : String - Typ der Spalte
D=Datum Z=Zahl T=Text
Beispiel:
SetODBCSpalten ZTTTDTZ
#####################################################
Proc SetODBCSpalten
Parameters String$
Declare Index%,Lang%,w%,Zeichen$
Lang%=Len(String$)
LVODBC_AnzS%=Lang%
WhileNot w%
if Index%=Lang%
w%=1
else
Zeichen$=Mid$(String$,(Index%+1),1)
LIST$ Index%=Zeichen$
Inc Index%
endif
Wend
EndProc
Erstellt neue Tabelle
Proc LVODBC_NewTable
Declare SQLString$,spalt#,name&,name$,Index%,w%,Typ$,L%
Dim spalt#,255
SQLString$=CREATE TABLE +LVODBC_TAB$+ (
WhileNot w%
if Index%=LVODBC_AnzS%
w%=1
else
name&=GetColumnName(LVH&,spalt#,Index%)
name$=String$(spalt#,0)
Typ$=List$(Index%)
Case Typ$=T:Typ$=TEXT
Case Typ$=Z:Typ$=REAL
Case Typ$=D:Typ$=DATE
SQLString$=SQLString$+name$+ +Typ$+,
Inc Index%
endif
wend
SQLString$=Left$(SQLString$,Len(SQLString$)-2)+)
SQLExec SQLString$,1
Dispose spalt#
EndProc
Dei eigentliche Routine des Exports
Proc LVODBC_Export
Declare Zeilen%,bereich#,text$,Spalte%,Zeilen&,ZeilenIndex%,z%,s%,SpaltenIndex%,SQLS$,name&,name$,Typ$,SQLStd$,SQL$
Dim bereich#,256
Zeilen&=GetLines(LVH&)
Zeilen%=Zeilen&
Spalte%=LVODBC_AnzS%
SQLStd$=INSERT INTO +LVODBC_TAB$+ (
WhileNot s%
if SpaltenIndex%>Spalte%
s%=1
else
name&=GetColumnName(LVH&,bereich#,SpaltenIndex%)
name$=String$(bereich#,0)
Typ$=List$(SpaltenIndex%)
SQLStd$=SQLStd$+name$+,
inc SpaltenIndex%
endif
Wend
SQLStd$=Left$(SQLStd$,Len(SQLStd$)-2)+) VALUES (
SpaltenIndex%=0
s%=0
WhileNot z%
if ZeilenIndex%=Zeilen%
z%=1
else
WhileNot s%
if SpaltenIndex%>Spalte%
s%=1
else
GetItemText(LVH&,bereich#,SpaltenIndex%,ZeilenIndex%)
text$=String$(bereich#,0)
Typ$=List$(SpaltenIndex%)
if Typ$=T
text$=Translate$(text$,,´)
SQLS$=SQLS$++text$+,
elseif Typ$=Z
text$=Translate$(text$,,,.)
SQLS$=SQLS$+text$+,
elseif Typ$=D
LVODBC_DATUM text$
SQLS$=SQLS$+$(0)+,
endif
Inc SpaltenIndex%
endif
Wend
SQLS$=Left$(SQLS$,Len(SQLS$)-2)
SQL$=SQLStd$+SQLS$+)
SQLExec SQL$,1
s%=0
SpaltenIndex%=0
SQL$=
SQLS$=
Inc ZeilenIndex%
endif
Wend
Dispose bereich#
EndProc
#####################################################
LV2ODBC
Exportiert die Listview
S1 : String - DSN String (Siehe Profan Hilfe SQLInit)
N1 : Integer - 0=Die Datenbank wurde schon in dem Hauptprogramm geöffnet.
1=Die Datenbank wird mit der Include geöffnet.
S2 : String - Tabellenname
N2 : Integer - 0=Tabelle nicht vorhanden, eine neue wird erstellt
1=Tabelle ist in der Datenbank schon vorhanden
N3 : Long - Handle der Listview
#####################################################
Proc LV2ODBC
Parameters DSN$,DSN%,Table$,tbl%,LVH&
if DSN%=1
LVODBC_DSN%=1
SQLINIT(DSN=+DSN$)
endif
LVODBC_DSN$=DSN$
LVODBC_TAB$=Table$
Case tbl%=0:LVODBC_NewTable
UseCursor 2
LVODBC_Export
UseCursor 0
Case LVODBC_DSN%=1:SQLDone
EndProc
#####################################################
LVSQL
Importiert einen SQL-String in ein ListView
S : String - Der SQL-String
N : Long - Handle des Listview
#####################################################
Proc LVSQL
Parameters SQLString$,LVH&
Declare Datei$,Zeile$,bytes&,bereich#,w%,String$,Index%
SQLEXEC SQLString$,2
Datei$=SQL.DAT
Assign #1,Datei$
Reset #1
Input #1,Zeile$
Close #1
Index%=1
DeleteAllItems(LVH&)
WhileNot w%
String$=SubStr$(Zeile$,Index%,;)
if Len(String$)=0
w%=1
else
InsertColumn LVH&,String$,120,0
Inc Index%
endif
Wend
InsertColumn LVH&,,0,0
bytes&=FileSize(Datei$)
If bytes&>0
Dim bereich#,bytes&
ReadFileQuick(addr(Datei$),bereich#,0,bytes&)
ShowWindow(LVH&,0)
CsvToListview(LVH&,bereich#,bytes&,Index%)
Dispose bereich#
DeleteColumn (LVH&,Index%-1)
DeleteItem (LVH&,0)
ShowWindow(LVH&,1)
Endif
EndProc