Brauche hilfe kann code nicht mehr fortführen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Brauche hilfe kann code nicht mehr fortführen

Re: Brauche hilfe kann code nicht mehr fortführen

von Gödel2607 » Do, 12.07.2007 19:10

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.

Re: Brauche hilfe kann code nicht mehr fortführen

von komma4 » Do, 12.07.2007 11:31

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

von nusta88 » Do, 12.07.2007 09:04

Code: Alles auswählen

 sTBez = sTBez + sBez + " VARCHAR(255), "
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

von komma4 » Mi, 11.07.2007 18:08

...ich verstehe mal wieder das Problem nicht....

Du codierst das Komma doch selbst im gezeigte Beispiel:
ist:

Code: Alles auswählen

 sTBez = sTBez + sBez + " VARCHAR(255), "
soll:

Code: Alles auswählen

 sTBez = sTBez + sBez + " VARCHAR(255) "

Re: Brauche hilfe kann code nicht mehr fortführen

von nusta88 » Mi, 11.07.2007 13:45

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?

Brauche hilfe kann code nicht mehr fortführen

von nusta88 » Mi, 11.07.2007 13:26

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.

Nach oben