webForumDet fria alternativet

Fast i textfil träsket...

ASP

10 svar · 367 visningar · startad av T_Codez

Medlem sedan juli 2001458 inlägg
Frågan#1

Hej

Jag har kört fast i textfils träsket...

det jag vill göra är att öppna en textfil.
läsa den första raden som läggs in i variabeln granne.
variabeln används sedan som urval i en sql-fråga.
sen om recordset har värde i BOF så går jag vidare på sidans kod.
om värde inte finns så vill jag ha taxtfilen 2:a värde.

Trodde att jag klurat ut det hela men jag har fått följande fel:

Error Type:
Microsoft VBScript compilation (0x800A0400)
Expected statement
/hardox/uk/stock.asp, line 83

Och koden ser ut så här:

sqlsats med standardvärde... som läggs i "rs"...

' sen följer det med...

Do until rs.BOF = True
rs.close 'stänger recordset så att en ny fresh kan jobba nedan
db.close 'stänger databasen så att en ny fresh kan jobba nedan

Dim txt_country3, txtfil3, granne

SET fso=CreateObject("scripting.FileSystemObject")
set txtFil3 = fso.OpenTextFile(server.mappath("./")"\grannar.txt")
'txt_country3=txtFil3.ReadLine

While not txtfil3.AtEndOfStream
granne = txtfil3.ReadLine

SQL = "SELECT * FROM tblartiklarlager WHERE fltcountrycode = '" & granne &"'"
Set db = Server.CreateObject("ADODB.Connection")
db.Open "int_hardoxDSN"
Set rs = db.Execute (SQL)

IF rs.BOF = True Then
txtFil3.Close
ELSE
wend (rad 83)
loop
END IF

Det borde ju fungera eller är det något som jag inte riktigt har greppat av det andra kanske...

Tack för uppmärksamheten

/ T

Medlem sedan juli 2001458 inlägg
#2

Hej igen...

Nu har jag grottat runt lite och kommit lite längre (hoppas jag) :-) .
Men det verkar som jag bara klivit ur askan in i elden.

Så här ser det ut nu...

Felmeddelande:

Error Type:
Microsoft VBScript runtime (0x800A01A8)
Object required: 'ca'
/stock.asp, line 77

Kod:

Do until rs.BOF = true

' rs.close 'stänger recordset så att en ny fresh kan jobba nedan
' db.close 'stänger databasen så att en ny fresh kan jobba nedan

Dim txt_country3, txtfil3, granne

SET fso=CreateObject("scripting.FileSystemObject")
set txtFil3 = fso.OpenTextFile(server.mappath("./") & "\\grannar.txt")
txt_country3=txtFil3.ReadLine 

While not txt_country3.AtEndOfStream rad 77

  granne = txt_country3.ReadLine

  SQL = "SELECT \* FROM tblartiklarlager WHERE fltcountrycode = '" & granne &"'"

  Set db = Server.CreateObject("ADODB.Connection")
  db.Open "int_hardoxDSN"
  Set rs = db.Execute (SQL)

  IF rs.BOF = false Then
   txtFil3.Close
  END IF
   wend

loop

Vad kan felet bero på?

Medlem sedan juni 200032 967 inlägg
#3

Kontrollera radnumret igen.
Felmeddelandet pekar på ett ogiltigt objekt, ca, men jag kan inte se något sådant i din kod.

Är det stock.asp du visar koden från?

Medlem sedan juli 2001458 inlägg
#4

njaej !? Det beror på att det är det första värdet på första raden i filen... "ca"

- Ja... det är i den filen.

När jag ändrar txt_country3 till txtfil3 så säger den samma sak om rad 79...
När jag sen ändrar den så ger den samma fel på rad 77 igen. Sen hoopar den fram och tillbaka på det viset hela tiden. MYSKO...

Jag hittade precis ett inlägg som du gjort tidigare där du läser in varje rad i en array. Ska ta och kolla på den lite... Men jag kommer med all säkerhet tillbaka i ämnet ganska så snart... :-)

/ T

Medlem sedan juni 200032 967 inlägg
#5

Är det något sånt här du tänkt dig?

Do until rs.BOF = true 

' rs.close 'stänger recordset så att en ny fresh kan jobba nedan 
' db.close 'stänger databasen så att en ny fresh kan jobba nedan 

Dim txt_country3, txtfil3, granne 

SET fso=CreateObject("scripting.FileSystemObject") 
set txtFil3 = fso.OpenTextFile(server.mappath("./") & "\grannar.txt") 

While not txtFil3.AtEndOfStream rad 77 

granne = txt_country3.ReadLine 

SQL = "SELECT * FROM tblartiklarlager WHERE fltcountrycode = '" & granne &"'" 

Set db = Server.CreateObject("ADODB.Connection") 
db.Open "int_hardoxDSN" 
Set rs = db.Execute (SQL) 

IF rs.BOF = false Then 
txtFil3.Close 
END IF 
wend 
loop

Fel:

set txtFil3 = fso.OpenTextFile(server.mappath("./") & "\grannar.txt")
txt_country3=txtFil3.ReadLine
While not txt_country3.AtEndOfStream rad 77
granne = txt_country3.ReadLine

Du försöker applicera .ReadLine på den sträng du lagt i variabeln txt_country3.

Notera skillnaderna i kod.

Mvh,

Medlem sedan juli 2001458 inlägg
#6

Jepp det är typ så jag vill ha det.

Använde mig dock av din tidigare arraykod. Så mitt slutresultat blev (för de som kanske har någe liknande bekymmer i framtiden samt en liten bkup till mig själv) :-) :

Do until rs.BOF = false

dim fso, text, textfil3, arrRows, counter
redim arrRows(1)
counter=0

set fso = CreateObject("Scripting.FileSystemObject")
set textfil3 = fso.OpenTextFile(server.mappath("./") & "\\grannar.txt",1, false)

while not textfil3.atendofstream
 counter=counter+1
redim preserve arrRows(counter+1)
arrRows(counter) = textfil3.ReadLine

wend
textfil3.close

rs.close 'stänger recordset så att en ny fresh kan jobba nedan
db.close 'stänger databasen så att en ny fresh kan jobba nedan

rakna = rakna + 1

SQL = "SELECT * FROM tblartiklarlager WHERE fltcountrycode = '" & arrRows(rakna) &"'"

Set db = Server.CreateObject("ADODB.Connection")
db.Open "int_hardoxDSN"
Set rs = db.Execute (SQL)

if rs.bof = true then
	'Response.Write "\[" &arrRows(rakna) &"\] is not valid either...\<br\>"
else
	'Response.Write "\[" &arrRows(rakna) &"\] is valid\<br\>"
	'testa = 1
end if

loop

Thankz @nders & wf !

Medlem sedan juni 200032 967 inlägg
#7

Använde mig dock av din tidigare arraykod.

Vilken tråd då?

Mvh,

Medlem sedan juli 2001458 inlägg
#8

http://www.webforum.nu/showthread.php?s=&threadid=8587&highlight=readline

Hittade den när jag sökte på "readline" :h

Medlem sedan juni 200032 967 inlägg
#9

Det finns smartare sätt (enklare, om inte annat) att lägga in det i en array dock.

Pseudokod:

strFile = objFile.ReadAll
varMyArray = split(strFile, vbCrLf)

Mvh,

Medlem sedan juli 2001458 inlägg
#10

Det är strålande... tackat tackar

Alltid lika roligt att lära sig någe nytt. Och ju färre kodrader
desto roligare & snyggare... :e

Medlem sedan juli 2001458 inlägg
#11

Utifall intresset finns nu eller senare...

Slutresultatet för denna tråd blev:

Do until rs.BOF = False 'om tidigare recset är falskt

Dim text, textfil3, arrRows

            'öppna fil, läs in i array, stäng fil
Set fso = CreateObject("Scripting.FileSystemObject")
Set textfil3 = fso.OpenTextFile(server.mappath("./") & "\\grannar.txt",1, False)
text = textfil3.ReadAll
arrRows = split(text, vbCrLf)	
textfil3.close

rs.close 'stänger recset så att en ny fresh kan jobba nedan
db.close 'stänger db så att en ny fresh kan jobba nedan

rakna = rakna + 1 'deklareras och tilldelas värdet 0 tidigare i koden

SQL = "SELECT * FROM tblartiklarlager WHERE fltcountrycode = '" & arrRows(rakna) &"'"

Set db = Server.CreateObject("ADODB.Connection")
db.Open "int_hardoxDSN"
Set rs = db.Execute (SQL)

Loop

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)