Ajuda - Busca - Membros - Calendário
Versão Completa: validaçao de dados excel to access
Fórum Script Brasil > Programação & Desenvolvimento > ASP
jtorres
antes de mais boa tarde a todos.

tou com um problema na importaçao de dados de uma folha excel para base de dados access. Tenho um scrip que me faz isso direitinho mas aceita dados duplicados, ou seja, eu gostava de saber se alguém sabe como eu posso usar o codigo abaixo de maneira que ao importar os dados me dê uma mensagem de erro se já existirem os dados da folha excel na bd access.


o codigo é o seguinte:

<!--#include file="includetop.asp"-->
<%
set Cmd=server.CreateObject("ADODB.COMMAND")
Cmd.ActiveConnection="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("bdgaji/regAtend.mdb") & ""%>

<%
Dim Conn, RS
Dim Campos, contador

'// CONECTAMOS COM O BANCO DE DADOS
Set Conn = CreateObject("ADODB.Connection")
With Conn
.Provider = "Microsoft.Jet.OLEDB.4.0"

'// Nesta linha perca que a conexão indica que utilizaremos um arquivo do Excel
.ConnectionString = "Data Source="& Server.MapPath("importaexcel/processos.xls") &";Extended Properties=Excel 8.0;"
.Open
End With

'// AO CRIAR O RECORDSET, O SELECT INDICA O NOME DA FOLHA DO ARQUIVO
Set RS = Conn.Execute("SELECT * FROM [Folha1$] ")

'// CONTAMOS QUANTAS LINHAS EXISTEM NO ARQUIVO
Campos = RS.Fields.Count

%>


<table align="center">
<tr>
<td>
<span class="style1" style="font-size: 18px; color: #FF0000; font-family: Algerian; font-weight:700"><u>Processos Importados</u></span></td>
</tr>
</table>
<br><br>
<%
'// INICIAMOS O LOOP%>
<table border=""1"" align="center">
<%
Do While RS.EOF = False

'// Aqui informamos os nomes das colunas para então lista os resultados
%>

<td align="center"><font size=1 face=verdana><b> RTNO </td>
<td align="center"><font size=1 face=verdana><b> Nome </td>
<td align="center"><font size=1 face=verdana><b> Nacionalidade </td>
<td align="center"><font size=1 face=verdana><b> Atendimento </td>
</tr>
<tr>
<td width="150" height="75" align="center"> <%=RS("RTNO")%> </td>
<td width="280" height="75"> <%=RS("Nome")%> </td>
<td width="50" height="75" align="center"> <%=RS("Nacionalidade")%> </td>
<td width="135" height="75" align="center"><%=RS("Atendimento")%></td>
</tr>


<%
vc1 = RS("RTNO")
vc2 = RS("Nome")
vc3 = RS("Tel")
vc4 = RS("Nacionalidade")
vc5 = RS("DataA")
vc6 = RS("Estado")
vc7 = RS("Atendimento")
vc8 = RS("DataF")


cmd.CommandText="insert into gaji (RTNO,Nome,Tel,Nacionalidade,DataA,Estado,Atendimento,DataF) values (RTNO,Nome,Tel,Nacionalidade,DataA,Estado,Atendimento,DataF)"
Cmd.Execute quant,Array(vc1,vc2,vc3,vc4,vc5,vc6,vc7,vc8)

RS.MoveNext
Loop
%>
</table>

<%
'// EXIBIMOS A QUANTIDADE DE REGISTROS ENCONTRADOS
'response.write campos

'// FECHAMOS E DESCONECTAMOS O RECORDSET E A CONEXÃO UTILIZADA
RS.Close
Set RS = Nothing
Conn.Close
Set Conn = Nothing

%>


<%set Cmd = nothing%>

PS:. Basta validar o campo RTNO.
já tentei com um If VC1 = RS("RTNO") then response.write "processo " & VC1 & "duplicado" else --> inser na bd end if

mas insere-me na mesma dados duplicados.

Se alguém me puder ajudar ficaria muito grato.

cumprimentos
bareta
faz um select buscando esses dados na tabela... antes de inserir

CODE
set rs=conn.execute(sql)
if rs.eof then
'não achou nada e faz o insert
else
'já existe e retorna a mensagem
end if
rs.close
jtorres
QUOTE(bareta @ 09/11/2011 - 18:20) *
faz um select buscando esses dados na tabela... antes de inserir

CODE
set rs=conn.execute(sql)
if rs.eof then
'não achou nada e faz o insert
else
'já existe e retorna a mensagem
end if
rs.close


boas, desde já obrigado pela dica.

Fiz isso que me disse mas não dá. devo tar a meter o codigo no sitio errado. segue abaixo como fiz, meti a vermelho o codigo que me disse para inserir.

<%
'// INICIAMOS O LOOP

%>

<table border=""1"" align="center">
<%
Do While RS.EOF = False
if rs.eof then
'// Aqui informamos os nomes das colunas para então lista os resultados
%>

<td align="center"><font size=1 face=verdana><b> RTNO </td>
<td align="center"><font size=1 face=verdana><b> Nome </td>
<td align="center"><font size=1 face=verdana><b> Nacionalidade </td>
<td align="center"><font size=1 face=verdana><b> Atendimento </td>
</tr>
<tr>
<td width="150" height="75" align="center"> <%=RS("RTNO")%> </td>
<td width="280" height="75"> <%=RS("Nome")%> </td>
<td width="50" height="75" align="center"> <%=RS("Nacionalidade")%> </td>
<td width="135" height="75" align="center"><%=RS("Atendimento")%></td>
</tr>


<%
vc1 = RS("RTNO")
vc2 = RS("Nome")
vc3 = RS("Tel")
vc4 = RS("Nacionalidade")
vc5 = RS("DataA")
vc6 = RS("Estado")
vc7 = RS("Atendimento")
vc8 = RS("DataF")

'set rs=conn.execute(sql)


cmd.CommandText="insert into gaji (RTNO,Nome,Tel,Nacionalidade,DataA,Estado,Atendimento,DataF) values (RTNO,Nome,Tel,Nacionalidade,DataA,Estado,Atendimento,DataF)"
Cmd.Execute quant,Array(vc1,vc2,vc3,vc4,vc5,vc6,vc7,vc8)

else

response.write "existem dados duplicados"
end if



RS.MoveNext
Loop
%>
</table>

<%
'// EXIBIMOS A QUANTIDADE DE REGISTROS ENCONTRADOS
'response.write campos

'// FECHAMOS E DESCONECTAMOS O RECORDSET E A CONEXÃO UTILIZADA

RS.Close
Set RS = Nothing
Conn.Close
Set Conn = Nothing

%>


quando faço a importaçao da folha excel, tendo dados duplicados ou não retorna sempre a mensagem "existem dados duplicados" e não insere.

PS:. só pretendo que o campo RTNO não seja duplicado.

Mais uma coisa, se der para dizer como faço para não deixar importar celulas vazias agradecia.

cumprimentos.
bareta
qual a sql que você ta executando pra testar se existe ou não no banco?
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2013 Invision Power Services, Inc.