webForumDet fria alternativet

Radera specifik rad i textfil

ASP

3 svar · 252 visningar · startad av m_soderlund

Medlem sedan sep. 20026 425 inlägg
Frågan#1

Jag undrar om det går (med hjälp av FileSystemObject och TextStreamObject) att radera en specifik rad i en textfil?
Dessa koder fungerar inte:

<%
Dim Cn, Rs

Set Cn = Server.Createobject("ADODB.Connection")
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\siter\tf\;extended properties=""text;hdr=yes;fmt=delimited;"";"
'Set Rs = Server.Createobject("ADODB.Recordset")

Set Rs = Cn.Execute("SELECT * FROM cd_orders.txt")

'Rs.Open "SELECT * FROM filen.txt" ,Cn

Do While Not Rs.EOF

Response.Write Rs.Fields(0) & "<br />"

If Len(Instr(Rs.Fields(0),"martin"))>0 Then
[red][b]	Cn.Execute("DELETE * FROM cd_orders.txt")[/b][/red]
End If

Rs.Movenext
Loop

Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing

%>

Ja ni, den rödmarkerade feta texten fungerar inte bra. Och en WHERE kan man ju inte ha där? En textfil har ju som kanske bekant inga fält.. :( Och SQL-satsen som jag satt ut där på prov fungerar ej heller..

txt_path = "c:/siter/admin/fil.txt"

Set fso = Server.Createobject("Scripting.FileSystemObject")
Set tso = fso.Opentextfile(txt_path,1)

arrTxt = Split(tso.ReadAll,VbCrLf)

For i = 0 To Ubound(arrTxt)

txt_line = arrTxt(i)

If Instr(txt_line,phonenr)>0 Then

Response.Write "raden hittad!"

End If

Next

tso.close : set tso = nothing
fso.close

..och koden med FSO fungerar ju inte den heller.

om någon har nån idé eller kanske rentav vet lösningen så är jag mycket tacksam!

Medlem sedan dec. 200012 464 inlägg
#2

Du får skapa en kopia där du skriver allt utom den rad du vill ta bort.

Medlem sedan sep. 20026 425 inlägg
#3

LarsG skrev:

Du får skapa en kopia där du skriver allt utom den rad du vill ta bort.

Preeecis det jag håller på med nu. Tack ändå LarsG. :bire

Medlem sedan sep. 20026 425 inlägg
#4

..och här kommer då lite exempelkod på hur man kan lösa detta:

[red]<%
Dim txt_path, fso, tso,i, arrTxt, txt_line, rep_text

txt_path = "c:/textfil.txt"
rep_text = "Texten där raden ska raderas"

Set fso = Server.Createobject("Scripting.FileSystemObject")
Set tso = fso.Opentextfile(txt_path,1)

arrTxt = Split(tso.ReadAll,VbCrLf)

For i = 0 To Ubound(arrTxt)
    If Instr(arrTxt(i),rep_text)>0 Then
       arrtxt(i) = ""
    End If
    
        txt_line = txt_line & arrTxt(i) & VbCrLf
End If

Next

tso.close : set tso = nothing
fso.close

Set fso = Server.CreateObject("Scripting.FileSystemObject")
		Set tso = fso.OpenTextFile(txt_path,2,True)
		tso.Writeline(txt_line)
		tso.Close : set tso = Nothing
		Set fso = Nothing
%>[/red]
267 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)