Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, estou tentando gravar uma linha em um arquivo txt existente, o problema é que eu preciso verificar se existe uma linha igual e se não existir gravar no arquivo, se essa linha já existir ele não grava, segue o código que estou usando:
'O parâmetro forReading é utilizado somente para leitura.
Const forReading = 1, forWriting = 2, forAppending = 8
'Instancia o objeto FSO.
Set Fso = CreateObject("Scripting.FileSystemObject")
'Retorna o arquivo que será usado.
Set ObjFile = Fso.GetFile(caminho)
'Abre o arquivo novamente, agora para a leitura !
Set ObjStream = ObjFile.OpenAsTextStream(forReading,false)
'Looping para varrer todas as linhas do arquivo.
While Not ObjStream.AtEndOfStream
'O método Readline lê uma linha de um arquivo.
Texto = Texto & ObjStream.Readline & "<br>"
Wend
'Mostra o conteúdo.
response.write Texto
'Abre o arquivo com o método OpenTextFile.
Set ArqTxt = Fso.OpenTextFile(caminho,8,True)
'Arquivo aberto, escreve no arquivo
If Texto = linha Then
response.write "linha é igual"
Else
ArqTxt.WriteLine conteudo
response.write "linha gravada!"
End If
'Fecha o arquivo com o método Close.
ArqTxt.Close
'Destrói o objeto.
Set ArqTxt = nothing
'Destruíndo objetos
Set Fso = nothing
Set objStream = nothing
vc pode ler a linha e comparar o conteúdo, mas o conteúdo tem que ser exatamente igual, 1 vírgula a mais ou acento, já fica diferente. Se for fazer por bd que é melhor, eu coloquei um tópico com funções para ver se existe dados duplicados no bd, tipo assim:
Este código é usado uso para verificar se os dados estão duplicados, e sendo verdadeiro ele remove os dados.
Remover registros duplicados
BODY { background-color: #336699; font-family: Verdana; font-size: 10pt; color: #FFFFFF }
TD { font-family: Verdana; font-size: 10pt; color: #000000 }
**
"" Then
Session("Password") = Request("password")
End if
if Session("Password") sPassword Then
Response.Write "Password: (CaSe SeNsiTivE) "
Else
delDub = False
File = Request.ServerVariables("SCRIPT_NAME")
File = StrReverse(File)
Posi = Instr(File, "/")
File = Left(File, Posi - 1)
File = StrReverse(File)
if Request.Form("db") "" Then
On Error Resume Next
DSNName = Request.Form("db")
sdbTable = Request.Form("tb")
spriKey = Request.Form("pk")
sdbField = Request.Form("fn")
sdbPath = "DBQ=" & Server.Mappath(DSNName) & ";Driver={Microsoft Access Driver (*.mdb)};"
strSQL = "SELECT COUNT(*) AS ttCount FROM " & sdbTable
Set strConn = Server.CreateObject("ADODB.Connection")
strConn.Open sdbPath
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = adUseClient
rs.Open(strSQL), strConn, adOpenForwardOnly, adLockReadOnly, adCmdText
Set rs = strConn.Execute(strSQL)
tempArr = ""
totalFound = rs("ttCount")
rs.Close
Set rs = nothing
totalFound = CInt(totalFound)
Response.Write totalFound
Response.Write " records" & vbcrlf
Response.Write "" & vbcrlf
strSQL = "SELECT " & sdbField & "," & spriKey & " FROM " & sdbTable & " ORDER BY " & sdbField
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = adUseClient
rs.Open(strSQL), strConn, adOpenForwardOnly, adLockReadOnly, adCmdText
if Err = 0 Then
For i = 0 To (totalFound - 1)
rs.MoveFirst
rs.Move(i)
lookFor = rs.fields(sdbField)
if lookFor = tempVal Then
foundDups = rs.fields(spriKey)
tempArr = tempArr & foundDups & ","
End if
tempVal = lookFor
Next
rs.Close
Set rs = nothing
if tempArr "" Then
Response.Write "Primary Key ID contendo dados duplicados no campo selecionado:" & vbcrlf
Response.Write "
" & vbcrlf
End if
if tempArr = "" Then
Response.Write "Não há registros duplicados encontrados." & vbcrlf
Else
tempArr = Left(tempArr, Len(tempArr) - 1)
Response.Write tempArr
tempArr = Split(tempArr, ",", -1, 1)
prCount = UBound(tempArr)
prCount = prCount + 1
Response.Write "
" & vbcrlf
For i = 0 To (prCount - 1)
strSQL = "DELETE FROM " & sdbTable & " WHERE " & spriKey & " = " & tempArr(i)
strConn.Execute(strSQL)
Next
End if
delDub = True
Else
Response.Write Err.Description
End if
strConn.Close
Set strConn = nothing
if Err = 0 And delDub = True Then
if tempArr "" Then
Response.Write "
" & prCount & "** registro duplicado"
if prCount 1 Then
Response.Write "s"
End if
Response.Write " excluída com sucesso." & vbcrlf
End if
End if
End if
%>
Remover duplicado registros de banco de dados
" METHOD="post">
Database:
**.mdb**
Nome da Tabela:
Nome do Campo:
Primary Key:
pelo que andei lendo não é possível, então vou fazer esse procedimento usando bando de dados, primeiro faço a consulta e depois vejo se há duplicidade e se não houver envio os dados para o txt, ainda fico no aguardo de uma solução sem ter que usar o banco de dados.