Logo Hardware.com.br
spynet
spynet Membro Senior Registrado
373 Mensagens 0 Curtidas

Preciso comparar dados - Urgente Please!!!

#1 Por spynet 07/10/2004 - 11:13
Olá pessoal, blz??
Tenho o codigo abaixo que faz importacao de um arquivo .txt para o bd access, ok???
Até ae tudo 100% tranquilo, mais o problema é o seguinte.
Qdo eu for importar novamente os dados, gostaria que a pagina verificasse se tem o nr. do codinterno que está gravado no bd. E se tiver (codbd = codtxt) ele não faz o insert e se for diferente (codbd <> codtxt) ele faz o insert.
Já tentei de todas as maneiras incluir o codigo que dá um loop no bd para pegar o rs("codinterno") e depois fazer essa comparação e não rola.
Se alguem puder me dar um help....


<%
''' ABRE O BD PARA FAZER O INSERT

ConnString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Inetpub\wwwroot\shopmedia\cliente\armazembrazilis\loja\dados_importar\loja.mdb"&";pwd=senha"

set rs= Server.CreateObject("ADODB.RecordSet")
set my_conn= Server.CreateObject("ADODB.Connection")
my_Conn.Open ConnString
StrSql = "Select * FROM Produto"
rs.Open StrSQl, my_conn, 2, 3


'O parâmetro forReading é utilizado somente para leitura.
Const forReading = 1, forWriting = 2, forAppending = 8

'Instancia o objeto FSO.
Set Fso = CreateObject("Scripting.FileSystemObject")

'O método GetFile retorna o arquivo existente.
Set ObjFile = Fso.GetFile("C:\Inetpub\wwwroot\shopmedia\cliente\armazembrazilis\loja\dados_importar\BRASILIS.txt")

'O método OpenAsTextStream abre o arquivo como sendo um fluxo de texto.
Set objStream = ObjFile.OpenAsTextStream(forReading,false)


''' CONTADOR DE QUANTAS LINHAS TEM DE REGISTRO NO TXT
Contar = 0


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' LOOP VARRENDO TODAS AS LINHAS DO ARQUIVO TXT
While Not ObjStream.AtEndOfStream

''' CONTA QUANTOS REGISTROS TEM NO TXT
Contar = Contar + 1

''' PEGA LINHA POR LINHA
linha = ObjStream.Readline
linha=Replace(linha,CHR(34),"")
linha=Replace(linha,CHR(39),"")

'''SEPARANDO OS CAMPOS. O DELIMITADOR USUADO AKI FOI O ;'
valor_campo=Split(linha,";",-1,1)


**** TERIA QUE COLOCAR +/- AQUI O IF PARA COMPARAR E FAZER O INSERT.


''' ABAIXO FAZ O INSERT NO BD.
StrSql="INSERT INTO Produto (CodInterno,NomeProduto,PrecoVenda) VALUES ('"&Trim(valor_campo(0))&"','"&Trim(valor_campo(1))&"','"&Trim(valor_campo(4))&"')"
my_conn.Execute (StrSql)


Wend
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''



my_conn.Close
set my_conn = nothing

'Fecha o arquivo.
objStream.Close

'Destruíndo objetos
Set Fso = nothing
Set objStream = nothing

Response.Write "OK - FEITO O INSERT"
%>


Abraços,
Adilson
Kakao
Kakao Super Participante Registrado
645 Mensagens 23 Curtidas
#2 Por Kakao
07/10/2004 - 14:01
Não sei se funciona no Access mas no SqlServer seria assim:

StrSql="if not exists (select CodInterno from Produto where CodInterno='" & Trim(valor_campo(0)) & "') " & _
"INSERT INTO Produto (CodInterno,NomeProduto,PrecoVenda) " & _
"VALUES ('"&Trim(valor_campo(0))&"','"&Trim(valor_campo(1))&"','"&Trim(valor_campo(4))&"')"
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal