Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Evilkenzera

de como verificar se já existe cod_pedido e status lançado?

Recommended Posts

Como faço para verificar se já existe o mesmo status com o mesmo código lançado,e retornar um aviso.Não estou conseguindo fazer, alguém sábio ae pode me ajudar? Exemplo de como tem que ficar no banco:cod_pedido | Status 2310 | Encaminhado para Produção 2310 | Produção 2311 | Encaminhado para Produção 2311 | Produção---------------------------------------Quero que me avise se o usuário tentar cadastrar assim:cod_pedido | Status 2310 | Encaminhado para Produção 2310 | Encaminhado para ProduçãoQuero que retorne um aviso dizendo que já tem esse status para esse cod_pedido.Espero ter explicado minha dúvida direito.O código que estou usando abaixo, más não funciona'Instruções SQL para verificar se já tem esse StatussqlSelect = "SELECT * FROM status WHERE status = '" & varStatus & " AND Cod_Pedido = " & varNumero_OS & "'"<%IF not rsSelect.EOF then%> <center><br><br><br><br><br><br><br><br><span class="style2"><% Response.write "Esse status já foi lançado"%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dependendo do jeito que você abre um recordset, ele não mostra quantos registros tem dentro dele.Faz um Response.Write rsSelect.RowCount, se ele retornar -1 quer dizer que você esta abrindo seu record set de maneira errada.A proposito, porque você não faz um tabela de status e nessa tabela utiliza o código do status ao inves da string.Trabalhando com string você esta mais sucetivel a erro, por exemplo maiuscula, minuscula, espaçamento no começo ou no fim da string, além de ir a favor das boas práticas de modelagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por responder.Más acho que você não entendeu o que quero.Primeiro, não está vindo de uma string e sim de um form.Segundo, o recordset está certo.O que quero, é que quando eu for incluir um registro, e se tiver esse registro igual, então que me retorne avisando que játem esse registro.entendeu.Só que ele tem que verificar conforme expliquei acimavaleu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahn desculpe ...Não tinha visto que você usou "IF not rsSelect.EOF then" pensei ter visto um RecordCount ai.Mas beleza. A principio parece estar certo, dá um response.write na sua variavel sqlSelect e vê o que ela retorna, executa ela direto no banco e vê se o select tá certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teve uma coisa que eu não entendi direito. Você quer colocar para o mesmo código de pedido todas as etapas da produção pelo qual ele já passou?

 

Exemplo:

 

|----cod_pedido-----|------status-------|

|---------------------------------------|

|.......2010........|.Chegou no depósito|

|.......2010........|..Passou no teste..|

|.......2010........|.....Produção......|

|.......2010........|....Encaminhado....|

 

 

Se você fizer isso, uma solução possível para o seu caso seria a utilização de um IF, comparando o valor recebido do form com cada valor recuperado de seu Banco de Dados.

 

O código abaixo não foi testado, mas dá para você ter uma noção do que quero dizer:

 

Dim ValorDoFormValorDoForm = Request.form("status")'Crie uma string SQL apenas para buscar o código desejado (não procure pelo status):SQL= "SELECT ...... WHERE cod_produto = 'CodigoDesejado'"'Crie um ciclo While ou Do While para comparar todos os valores do status com o valor da variável recuperada no form:While NOT objRS.EOFIf ValorDoForm = objRS("status") ThenResponse.write "O valor do status: " & objRS("status") & " já está cadastrado em nosso sistema."End IfobjRS.MoveNextWend

Bom, essa é minha sugestão. Qualquer dúvida estamos aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela dica. Está quase dando certo, o caminho é esse, más ainda continuo errando.Eu coloquei o código que você me passou, porém quando vou incluir o mesmo status, ele retorna a mensagem de que já existe, más inclui no banco assim mesmo e também mostra a mensagem que foi incluído.Eu coloquei o código inteiro aqui<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%><!--#include file="restrito2.asp"--><!--#include file="connections/bib_conexao.asp"--><%Dim Conexao, rs, sqlInsert, rsSelect, sqlSelectDim varStatus, varEM, varObservacaoDim varNumero_OSvarNumero_OS = Request.form("os")varStatus = Request.Form("status")varEM = Request.Form("EM")varObservacao = Request.Form("Observacao")varStatus = replace(varStatus, "'", "")varEM = replace(varEM, "'", "")varObservacao = replace(varObservacao, "'", "")sqlSelect = "SELECT * FROM status WHERE Cod_Pedido = '" & varNumero_OS & "'"'abre a conexaoCall abre_conexaoSet rsSelect=Conexao.Execute(sqlSelect)%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Untitled Document</title><style type="text/css"><!--.style1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; font-weight: bold;}--></style></head><body><%While NOT rsSelect.EOFIf varStatus = rsSelect("status") Then%> <center><br><br><br><br><br><br><br><br><span class="style2"><% Response.write "Esse status já foi lançado"%><center></span><br><br><input type="button" value="Retornar" onclick="document.location='os_detalhe2.asp?os=<%= varNumero_OS%>'" name="button" /><%End IfrsSelect.MoveNextWend%><%sqlInsert = "INSERT INTO status (COD_Pedido, Status, EM, OBS)"sqlInsert = sqlInsert & "values ( '" & varNumero_OS & "','" & varStatus & "','" & varEM & "','" & varObservacao & "')"%><%Set rs=Conexao.Execute(sqlInsert)%> <center><br><br><br><br><br><br><br><br><span class="style1"><% Response.write "Status Adicionado com Sucesso!!! " %><center></span><br><br><input type="button" value="Retornar" onclick="document.location='os_detalhe2.asp?os=<%=varNumero_OS%>'" name="button" /><%'fecha a conexaoCall fecha_conexaoSet rs = NothingSet rsSelect = Nothing%></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Evilkenzera!

Bom, dando uma olhada rápida no seu código, eu percebi que você comparou corretamente o valor da variável recebida pelo form (varStatus) com os valores do seu BD (rsSelect("status")). No entanto, após o fim dessa comparação, você não criou nenhum mecanismo que impeça a inserção dos valores no seu Banco de Dados.

 

Imagine sua página sendo interpretada linha após linha, de cima para baixo. Sendo assim, veja que após comparar os valores entre os dois valores, você deixou livre o código VBScript para inserir os valores no BD:

 

<%End IfrsSelect.MoveNextWend'Após a comparação ter sido feita, o código abaixo continuará sendo executado normalmente. %><%sqlInsert = "INSERT INTO status (COD_Pedido, Status, EM, OBS)"sqlInsert = sqlInsert & "values ( '" & varNumero_OS & "','" & varStatus & "','" & varEM & "','" & varObservacao & "')"%>

 

De acordo com sua dúvida, para corrigir esse problema você deveria inserir um ELSE antes de:

 

<%sqlInsert = "INSERT INTO status (COD_Pedido, Status, EM, OBS)"sqlInsert = sqlInsert & "values ( '" & varNumero_OS & "','" & varStatus & "','" & varEM & "','" & varObservacao & "')"'Etc...%>

...para evitar que essa parte seja executada, caso o argumento do IF seja verdadeiro.

 

IF (Verdadeiro) Then

<O bloco é executado>

Else

<Não é executado>

End IF

 

Logicamente o End If iria para o fim do código que não deverá ser executado, caso os valores do form e do rsSelect sejam iguais.

 

É isso... espero que tenha ajudado e não complicado ainda mais, hehe!!!

 

Abraços e boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu coloquei um IF e ELSE, más não estou conseguindo.

E não sei porque tá dando esse erro.

 

# Tipo de erro:

Erro de compilação do Microsoft VBScript (0x800A0400)

Instrução esperada

/isopor/status_envia2.asp, line 68

Wend

 

 


varEM = replace(varEM, "'", "")

varObservacao = replace(varObservacao, "'", "")

 

 

sqlSelect = "SELECT * FROM status WHERE Cod_Pedido = '" & varNumero_OS & "'"

 

 

'abre a conexao

Call abre_conexao

Set rsSelect=Conexao.Execute(sqlSelect)

%>

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http linenums:0'><%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%><!--#include file="restrito2.asp"--><!--#include file="connections/bib_conexao.asp"--><%Dim Conexao, rs, sqlInsert, rsSelect, sqlSelectDim varStatus, varEM, varObservacaoDim varNumero_OSvarNumero_OS = Request.form("os")varStatus = Request.Form("status")varEM = Request.Form("EM")varObservacao = Request.Form("Observacao")varStatus = replace(varStatus, "'", "")varEM = replace(varEM, "'", "")varObservacao = replace(varObservacao, "'", "")sqlSelect = "SELECT * FROM status WHERE Cod_Pedido = '" & varNumero_OS & "'"'abre a conexaoCall abre_conexaoSet rsSelect=Conexao.Execute(sqlSelect)%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Untitled Document</title><style type="text/css"><!--.style1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; font-weight: bold;}--></style></head><body><%While Not rsSelect.EOFif varStatus = rsSelect("status") then%> <center><br><br><br><br><br><br><br><br><span class="style2"><% Response.write "Esse status já foi lançado"%><center></span><br><br><input type="button" value="Retornar" onclick="document.location='os_detalhe2.asp?os=<%= varNumero_OS%>'" name="button" /><%rsSelect.MoveNextWendElse%><%sqlInsert = "INSERT INTO status (COD_Pedido, Status, EM, OBS)"sqlInsert = sqlInsert & "values ( '" & varNumero_OS & "','" & varStatus & "','" & varEM & "','" & varObservacao & "')"%><%Set rs=Conexao.Execute(sqlInsert)%> <center><br><br><br><br><br><br><br><br><span class="style1"><% Response.write "Status Adicionado com Sucesso!!! " %><center></span><br><br><input type="button" value="Retornar" onclick="document.location='os_detalhe2.asp?os=<%=varNumero_OS%>'" name="button" /><%end if'fecha a conexaoCall fecha_conexaoSet rs = NothingSet rsSelect = Nothing%></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois do seu campo BODY, coloque o seguinte código:

 

<%'Criando uma variável controle denominada varIgual (você pode escolher outro o nome ou outro valor para ela. É só um exemplo).'Enquanto varIgual for "Nao", os valores comparados serão diferentesDim varIgualvarIgual = "Nao"While Not rsSelect.EOF	  'Se o status já existir... o bloco do IF será executado.	  	  If varStatus = rsSelect("status") then	  'varIgual passara´a assumir o valor "Sim"	  varIgual = "Sim"	  %>	  <center><br><br><br><br><br><br><br><br>	  <span class="style2">	  <%="Esse status já foi lançado"%>	  <center></span><br><br>	  <input type="button" value="Retornar" onclick="document.location='os_detalhe2.asp?os=<%= varNumero_OS%>'" name="button" />	  <%	  End If'Fim do bloco do WENDWend'Verificando o valor da variavel varIgual. Se continuou como "Nao", o bloco a seguir será executado:If varIgual="Nao" ThensqlInsert = "INSERT INTO status (COD_Pedido, Status, EM, OBS) " &_"VALUES ('" & varNumero_OS & "','" & varStatus & "','" & varEM & "','" & varObservacao & "')"Set rs=Conexao.Execute(sqlInsert)%><center><br><br><br><br><br><br><br><br><span class="style1"><%="Status Adicionado com Sucesso!!!"%><center></span><br><br><input type="button" value="Retornar" onclick="document.location='os_detalhe2.asp?os=<%=varNumero_OS%>'" name="button" /><%END IFrsSelect.MoveNextWend'fecha a conexaoCall fecha_conexaoSet rs = NothingSet rsSelect = Nothing%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá quase funcionando, porém tá dando esse erro, pois tem 2 wend nesse código.Qualquer um que eu apague, daí não funciona.Tipo de erro:Erro de compilação do Microsoft VBScript (0x800A0400)Instrução esperada/isopor/status_envia2.asp, line 98Wend

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%><!--#include file="restrito2.asp"--><!--#include file="connections/bib_conexao.asp"--><%Dim Conexao, rs, sqlInsert, rsSelect, sqlSelectDim varStatus, varEM, varObservacaoDim varNumero_OSDim varIgualvarIgual = "Nao"varNumero_OS = Request.form("os")varStatus = Request.Form("status")varEM = Request.Form("EM")varObservacao = Request.Form("Observacao")varStatus = replace(varStatus, "'", "")varEM = replace(varEM, "'", "")varObservacao = replace(varObservacao, "'", "")'Instruções SQL para verificar se já tem esse Status'sqlSelect = "SELECT * FROM status WHERE Cod_Pedido = '" & varNumero_OS & " AND status = " & varStatus & "'"sqlSelect = "SELECT * FROM status WHERE Cod_Pedido = '" & varNumero_OS & "'"'abre a conexaoCall abre_conexaoSet rsSelect=Conexao.Execute(sqlSelect)%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Untitled Document</title><style type="text/css"><!--.style1 {	font-family: Verdana, Arial, Helvetica, sans-serif;	font-size: 9pt;	font-weight: bold;}--></style></head><body><%While Not rsSelect.EOF'Se o status já existir... o bloco do IF será executado.      If varStatus = rsSelect("status") then'varIgual passara´a assumir o valor "Sim"varIgual = "Sim"%> <center><br><br><br><br><br><br><br><br><span class="style2"><% Response.write "Esse status já foi lançado"%><center></span><br><br><input type="button" value="Retornar" onclick="document.location='os_detalhe2.asp?os=<%= varNumero_OS%>'" name="button" /><%End If'Fim do bloco do WENDWend'Verificando o valor da variavel varIgual. Se continuou como "Nao", o bloco a seguir será executado:If varIgual="Nao" ThensqlInsert = "INSERT INTO status (COD_Pedido, Status, EM, OBS)"sqlInsert = sqlInsert &  "values ( '" & varNumero_OS & "','" & varStatus & "','" & varEM & "','" & varObservacao & "')"%><%Set rs=Conexao.Execute(sqlInsert)%> <center><br><br><br><br><br><br><br><br><span class="style1"><% Response.write "Status Adicionado com Sucesso!!! " %><center></span><br><br><input type="button" value="Retornar" onclick="document.location='os_detalhe2.asp?os=<%=varNumero_OS%>'" name="button" /><%END IFrsSelect.MoveNextWend'fecha a conexaoCall fecha_conexaoSet rs = NothingSet rsSelect = Nothing%></body></html>

Só uma pergunta? Como que faz para o código postado aqui, não ficar com barra de rolagem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uai.. de onde tinha saído aquele último WEND? hehehehe... apaga ele!!! Leve o comando "rsSelect.MoveNext" para antes do WEND que sobrou.Vai ficar assim:End If rsSelect.MoveNextWENDAcho que não terá erro mais não...Para colocar o código sem barra de rolagem eu só clico em Responder aqui embaixo e clico em inserir CODE no painel aqui de cima.Vamos ver se agora o código executa legal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.