Jump to content


FLACAR2011

Member Since 03/04/2011
Offline Last Active 26/05/2011, 23:39
-----

Topics I've Started

Aps + Access - Como Evitar Inserção Dados Duplicados Bd

20/05/2011, 16:32

Boa a tarde a todos;

Gostaria de saber alguém poderia me dar uma dica, pois não sou programador profissional e estou fazendo um teste de um site com formulário de cadastro de cliente para um colega e gostaria de saber como faço para que o "código do cliente (campo: cod_cliente)" não seja inserido duplicado, pois ele será digitado manualmente e não gerado automático através de uma chave primária.

Estes códigos de cliente meu colega irá pegar de umas fichas e por isso não pode ser automático. O arquivo checa.asp deveria fazer está validação verificando se o código já existe através de uma verificação do banco em confronto com o que vem do formulário, mas ele não está funcionando.

Se no IF eu fixar os valores para verificação (apenas para teste) funciona, mas quando ele vem do formulário não funciona.

Segue os códigos.

Banco access:
Nome Banco: DB.MDB
Tabela: CLIENTES
Campos:COD_CLIENTE / CLIENTE




FORM_CAD.ASP
<html>
<head>
<title>Teste Cadastro</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<form method="post" action="checa.asp">
<p>
Código
<input name="cod_cliente" type="text" size="15" maxlength="10">
Cliente
<input name="cliente" type="text" size="45" maxlength="10">
</p>
<p>
<input type="submit" class="salvar" name="inser" value="INSERIR" />
</p>
</form>

</body>
</html>




CHECA.ASP
<%
Option Explicit
Response.Expires = 0
Dim objConn, objRs, strQuery, conn, strConnection

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("/dados/db.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"

'Seleciona da tabela contato
strQuery = "SELECT * FROM cliente WHERE cod_cliente ORDER BY id_cl ASC"
Set ObjRs = objConn.Execute(strQuery)
%>

<% if ObjRS("cod_cliente") <> Request.Form("cod_cliente") then
response.write "Não Cadastrado"
response.redirect "insere.asp"
Else
response.write "Código já cadastrado"
response.redirect "form_cad.asp"
End if
%>

INSERE.ASP
<meta http-equiv="refresh" content="1; url=form_cad.asp">
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/dados/db.mdb")

Valor0 = request.Form("COD_CLIENTE")
Valor1 = request.Form("CLIENTE")

SQL = "INSERT INTO CLIENTES (CT_CLIENTE, CLIENTE) VALUES ('" & Valor0 & "','" & Valor1 & "')"
Set Rs = Conn.Execute(SQL)
%>

Se alguém puder me ajudar ficarei muito grato.

Abraços.

Asp - Dúvida Com Vários Request.Form

03/04/2011, 23:02

Boa noite, pessoal .

Preciso fazer um página de busca que traga os seguintes resultados:

Ao digitar o nome do responsável, no exemplo acima (Carlos, Flavio ou Luiz) preciso que me traga
o status (ANALISE, Pendente ou APROVADO ) dos documentos aos quais são responsáveis.


TABELA CONTROLE

|ID_CT | CT_OS | CT_CLIENTE | CT_RESP1 | CT_DOC1 | CT_RESP2 | CT_DOC2 | CT_RESP3 | CT_ROC3 |
---------------------------------------------------------------------------------------------------------------------------
| 01 | 1800 | COND.XPTO | LUIZ | APROVADO | FLAVIO | ANALISE | FLAVIO | PENDENTE|
| 01 | 2300 | COND.ABC | CARLOS | PENDENTE | CARLOS | PENDENTE | CARLOS | ANALISE |
| 01 | 3000 | COND.123 | FLAVIO | APROVADO | FLAVIO | ANALISE | LUIZ | APROVADO|



Fiz o seguinte formulário: Busca.asp

<form action="busca_setn_t3.asp?accao=procura" method="POST" onSubmit="return valida_dados(this)">

<input name="n_resp" type="text" class="linhaform" value="" size="15" maxlength="50">

<input name="submit" type="submit" value="Localizar">

</form>

Onde digito o nome de um dos responsáveis e o resultado vem na página seguinte: busca_setn_t3.asp


<%
Option Explicit
Response.Expires = 0
Dim u, filepath, objConn, objRs, strQuery, strConnection

Sub Listar()
filepath=Server.MapPath("/dados/bdcontrol.mdb")
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath
'Seleciona da tabela contato
strQuery = "SELECT * FROM controle WHERE ct_ps_resp1 LIKE '%" & Request.Form("n_resp") & "%' AND ct_doc1 ORDER BY ct_os DESC"
Set ObjRs = objConn.Execute(strQuery)
%>


<%
u=0
while not objRS.EOF%>

<%=objRS("ct_OS")%> - <%=objRS("ct_cliente")%> - <%=objRS("ct_ps_resp1")%> - <%=objRS("ct_doc1")%> <BR>


<%u=u+1%>
<%
objRS.MoveNext
Wend
%>


Para busca em um tipo de documento (por exemplo CT_DOC1) funciona perfeitamente, mas eu preciso consultar os 3 documentos.

Fiz a seguinte modificação:



<%
Option Explicit
Response.Expires = 0
Dim u, filepath, objConn, objRs, strQuery, strConnection

Sub Listar()
filepath=Server.MapPath("/dados/bdcontrol.mdb")
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath
'Seleciona da tabela contato
strQuery = "SELECT * FROM controle WHERE ct_ps_resp1 LIKE '%" & Request.Form("n_resp") & "%' AND ct_doc1 AND ct_ps_resp2 LIKE '%" & Request.Form("n_resp") & "%'
AND ct_doc2 AND ct_ps_resp3 LIKE '%" & Request.Form("n_resp") & "%' AND ct_doc3 ORDER BY ct_os DESC"
Set ObjRs = objConn.Execute(strQuery)
%>



<%
u=0
while not objRS.EOF%>

<%=objRS("ct_OS")%> - <%=objRS("ct_cliente")%> - <%=objRS("ct_ps_resp1")%> - <%=objRS("ct_doc1")%> <BR>
<%=objRS("ct_OS")%> - <%=objRS("ct_cliente")%> - <%=objRS("ct_ps_resp2")%> - <%=objRS("ct_doc2")%> <BR>
<%=objRS("ct_OS")%> - <%=objRS("ct_cliente")%> - <%=objRS("ct_ps_resp3")%> - <%=objRS("ct_doc3")%> <BR>

<%u=u+1%>
<%
objRS.MoveNext
Wend
%>



...Mas não funcionou. Ele pega as informações desencontradas.

Alguém poderia me ajudar como resolver este problema?

Desde já fico muito grato.

IPB Skin By Virteq