Jump to content
Fórum Script Brasil
  • 0

validaçao de dados excel to access


jtorres

Question

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 to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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.

Edited by jtorres
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...