Ir para conteúdo
Fórum Script Brasil
  • 0

validaçao de dados excel to access


jtorres

Pergunta

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

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
faz um select buscando esses dados na tabela... antes de inserir

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.

Editado por jtorres
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...