Seite 1 von 1
Brauche hilfe kann code nicht mehr fortführen
Verfasst: Mi, 11.07.2007 13:26
von nusta88
Erst zeige ich euch mal den Code:
Code: Alles auswählen
Filename = "C:\Programme\CrossConsult\CrossLine\trdoc\tmp\MHABR\abrpos.txt"
oDesktop = createUNOService("com.sun.star.frame.Desktop")
FileNo = Freefile
Open Filename For Input As FileNo
i = 1
oAnfang = 1
Do While not eof(FileNo) Line Input #FileNo, CurrentLine
If CurrentLine <> "" then
olen = len(CurrentLine)
oText = CurrentLine
If i = 1 then
Do until
slen = slen + InStr(oAnfang, oText, " ") - 1
sTBez = sTBez + Mid(oText, oAnfang, slen) + " VARCHAR(255), "
oAnfang = slen + 1
Loop
sSql = "CREATE TABLE abrpos (" & sTBez & ")"
oStmt.executeQuery(sSql)
Das Problem ist ich muss das so lange machen bis eigentlich ende der Zeile erreicht ist, aber wie muss ich das angeben? Das zweite Problem wäre bei "VARCHAR(255), ", weil hier immer ein Komma ans Ende gesetzt wird, aber eigentlich sollte dies im letzten String nicht der Fall sein. Sonst wäre eigentlich alles gelöst.
Re: Brauche hilfe kann code nicht mehr fortführen
Verfasst: Mi, 11.07.2007 13:45
von nusta88
Code: Alles auswählen
Filename = "C:\Programme\CrossConsult\CrossLine\trdoc\tmp\MHABR\abrpos.txt"
oDesktop = createUNOService("com.sun.star.frame.Desktop")
FileNo = Freefile
Open Filename For Input As FileNo
i = 1
oAnfang = 1
sDT = 1
Do While not eof(FileNo) Line Input #FileNo, CurrentLine
If CurrentLine <> "" then
olen = len(CurrentLine)
oText = CurrentLine
If i = 1 then
Do until sDT = ""
slen = slen + InStr(oAnfang, oText, " ") - 1
sBez = Trim(Mid(oText, oAnfang, slen))
sTBez = sTBez + sBez + " VARCHAR(255), "
oAnfang = slen + 1
sD = oAnfang
sDT = Mid(oText, sD, 1)
Loop
sSql = "CREATE TABLE abrpos (" & sTBez & ")"
oStmt.executeQuery(sSql)
Ich hab das soweit verbessert, das einzige Problem noch ist, dass immer ein , bei VARCHAR steht. Wie kann ich es verhindern, dass am Ende kein Komma steht?
Re: Brauche hilfe kann code nicht mehr fortführen
Verfasst: Mi, 11.07.2007 18:08
von komma4
...ich verstehe mal wieder das Problem nicht....
Du codierst das Komma doch selbst im gezeigte Beispiel:
ist:
soll:
Re: Brauche hilfe kann code nicht mehr fortführen
Verfasst: Do, 12.07.2007 09:04
von nusta88
Nein so ist das ja eigentlich richtig, aber es ist immer ein Komma vorhanden. Lass mich das so erklären. Dieser Code befindet sich ja in einer Schleife, also wird es paar mal wiederholt je nach Situation. Wenn es dreimal wiederholt wird will ich, das beim dritten mal kein Komma mehr am Ende steht.
Re: Brauche hilfe kann code nicht mehr fortführen
Verfasst: Do, 12.07.2007 11:31
von komma4
dann musst Du einen Schleifenzähler einbauen und im dritten Durchlauf (if z < 3 ELSE ...) den String anders aufbereiten...
Re: Brauche hilfe kann code nicht mehr fortführen
Verfasst: Do, 12.07.2007 19:10
von Gödel2607
komma4 hat geschrieben:dann musst Du einen Schleifenzähler einbauen und im dritten Durchlauf (if z < 3 ELSE ...) den String anders aufbereiten...
Das wird so ohne weitere Änderungen nicht gehen, da man ja offenbar im voraus nicht weiß, welches der letzte Durchlauf ist, bei dem das Komma entfallen soll.
Die einfachste Lösung ist vermutlich einfach nach der Schleife die Textvariable um ein Zeichen zu verkürzen, also das letzte Komma einfach abschneiden. Das geht mit left(sTBez,len(sTBez)-1).
Wesentlich eleganter (finde ich) wäre es jedoch, die ganze Konstruktion etwas umzubauen. Ich würde das Komma gesondert am Anfang der Schleife
vor die Folgeanweisung setzen. Dann müßte man nur dafür sorgen, daß dies im ersten Durchlauf nicht geschieht. Hierzu könnte man entweder ein flag setzen und auswerten oder aber auf die Länge von sTBez testen. Diese müßte im ersten Durchlauf ja Null sein, wenn nicht vorher etwas mit der Variablen passiert. Dies Anweisung könnte so aussehen:
if sTBez <> "" then sTBez = sTBez + ","
G.