Jump to content


Photo

Combo


  • Faça o login para participar
9 replies to this topic

#1 Nanita

Nanita

    Turista

  • Usuários
  • 37 posts
  • Sexo:Não informado

Posted 24/06/2004, 11:57

Bom dia pessoal.

Tenho um formulário com duas combos. Ambas estão carregadas com dados de duas tabelas...

Depois que eu envio o formulário, preciso cadastrar os dados em uma terceira tabela que contém todos os campos desse formulário inclusive o id do que está nas combos...

Como faço esse cadastro?

Abaixo o código do formulário...
<!--#include virtual="conecta.inc"-->

<%
' criação do objecto recordset para carregar a combo
  Set rsCombo = Server.CreateObject("ADODB.Recordset")
  Set rsCombo1 = Server.CreateObject("ADODB.Recordset")


' criar a declaração de SQL 
  Dim strSQL
  Dim strSQL1
  strSQL = "SELECT sigla FROM orgaos order by sigla"
  strSQL1 = "SELECT descprojeto FROM projetos order by idprojeto"


' executar a declaração de SQL desejada. Retorna a informação para as combos
  rsCombo.Open strSQL, strCon
  rsCombo1.Open strSQL1, strCon
%>

<html>
<head>
</head>

<body>
<form method="POST" action="NovoProcessoAction.asp" target="_self" name="Formulario">
<div align="center">
<center>
<table border="0" width="682">
<tr>
<td width="662" colspan="3"><select name="txtcombo1" size="1">
<% 
' enquanto não chegamos ao fim dos dados
  Do While Not rsCombo1.EOF
%>
<!-- Aqui é o que aparece na Primeira Combo -->
<option value="<%=rsCombo1("descprojeto")%>"><%=rsCombo1("descprojeto")%></option>
<% 
' Movemos para os dados seguintes do recordset...
  rsCombo1.MoveNext 
  Loop ' continuamos o Loop
%>
</select>
</td>
</tr>

<tr>
<td width="150">Código do processo</td>
<td width="512" colspan="2">Descrição do processo</td>
</tr>

<tr>
<td width="150"><input type="text" name=txtcodigoprocesso size="20">
</td>
<td width="512" colspan="2"><input type="text" name=txtdescprocesso size="72">
</td>
</tr>

<tr>
<td width="150">Data de início</td>
<td width="150">Validade</td>
<td width="362">Órgão</td>
</tr>

<tr>
<td width="150"><input type="text" name=txtDataProcesso size="20">
</td>
<td width="150"><input type="text" name=txtValidade size="20" style="border: 1 solid #C0C0C0">
</td>
<td width="362"><select name="txtcombo" size="1">
<% 
' enquanto não chegamos ao fim dos dados
Do While Not rsCombo.EOF
%>
<!-- Aqui é o que aparece na Segunda Combo -->
<option value="<%=rsCombo("sigla")%>"><%=rsCombo("sigla")%></option>
<% 
' Movemos para os dados seguintes do recordset...
rsCombo.MoveNext 
Loop ' continuamos o Loop
%>
</select>
</td> </tr> </table> </center> </div>

<div align="center">
<center> <table border="0" width="684"> <tr>
<td width="150">
<input type="submit" value="Enviar" name="B1">
</td> <td width="150"> </td> <td width="364">
</td> </tr> </table> </center> </div>

</form>

<%
' fechar e limpar o objeto do recordset da combo
rsCombo1.Close 
rsCombo.Close 

Set rsCombo1 = Nothing 
Set rsCombo = Nothing 
%> 
</body>
</html>

Miau...
Um abraço
Nanita

#2 Dinho Z.

Dinho Z.

    Rock'n'Roll !!! Yeah !!!

  • Usuários
  • 755 posts
  • Sexo:Não informado
  • Localidade:Santo André - SP

Posted 24/06/2004, 12:45

Você não está abrindo a tag select, só fechando ela e pondo os option's...

Abra a tag select e dê um name para ela, aí é só usar o Request.Form com o nome do select para ele pegar o valor passado...

Exemplo:
<select name="sel1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>

Dinho

Ajude a proibir os "jabás" nas rádios brasileiras.
Mas, afinal, o que é o "jabá"?!? acesse Rock Brasil
Acesse Fórum SOS Designers
Coluna de JavaScript/CSS do Upmasters

#3 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 24/06/2004, 12:56

Seu código:
...
<select name="txtcombo1" size="1">
<% 
Do While Not rsCombo1.EOF
%>
<option value="<%=rsCombo1("descprojeto")%>"><%=rsCombo1("descprojeto")%></option>
<% 
 rsCombo1.MoveNext 
 Loop
%>
</select>
...

Na página NovoProcessoAction.asp, indicada no FORM, utilize:
...
variavel = request.form("txtcombo1")
...

Ps.: o seu código esta exibindo o descprojeto como valor para o CAMBO, neste caso, o valor enviado a página será o descprojeto, se quiser enviar o ID, como comentado no post, substitua a linha a seguir:
<option value="<%=rsCombo1("descprojeto")%>"><%=rsCombo1("descprojeto")%></option>

vai ficar algo parecido com:
<option value="<%=rsCombo1("idprojeto")%>"><%=rsCombo1("descprojeto")%></option>
------
Mero mortal!

#4 Nanita

Nanita

    Turista

  • Usuários
  • 37 posts
  • Sexo:Não informado

Posted 24/06/2004, 15:11

Oi Prog... fiz tudo como me indicou mas está dando erro e não consigo achar onde está :(

Ele diz que o número de campos enviados e os da tabela não batem...
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC Microsoft Access Driver] Number of query values and destination fields are not the same. 

/raiz/novoProcessoAction.asp, line 36 

Onde está o erro?

Abaixo o código do novoprocessoaction.asp

<!--#include virtual="conecta.inc"-->
<%
DIM projeto
DIM codigo
DIM descricao
DIM data
DIM validade
DIM orgao

projeto    = request.form("txtcombo1")
codigo     = request.form("txtcodigoprocesso")
descricao  = request.form("txtdescprocesso")
data       = request.form("txtdataprocesso")
validade   = request.form("txtvalidade")
orgao      = request.form("txtcombo")

SQL = "INSERT into processos (idprojeto,idprocesso, descprocesso, 
datainiprocesso, validadeprocesso, idorgao) values 
('"&projeto&"','"&codigo&"','"&descricao&"',
'"&data&"','"&validade&"','"&orgao&"')

Conexao.Execute(SQL)
Conexao.close
set Conexao = nothing

response.Write("Cadastro efetuado")
%>

Edição feita por: Nanita, 24/06/2004, 15:17.

Miau...
Um abraço
Nanita

#5 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 24/06/2004, 15:31

Desculpe senhorita...

verifique seu comando SQL:

esta assim:
strSQL1 = "SELECT descprojeto FROM projetos order by idprojeto"

substitua para:
strSQL1 = "SELECT idprojeto, descprojeto FROM projetos order by idprojeto"
------
Mero mortal!

#6 Nanita

Nanita

    Turista

  • Usuários
  • 37 posts
  • Sexo:Não informado

Posted 24/06/2004, 16:13

Obrigada pelas respostas...

Mas continua dando o erro...

Coloquei assim também:

strSQL = "SELECT * FROM projetos order by idprojeto"

mas continua dando o mesmo erro.


Tens idéia? :huh:

PS: não coloquei todos os campos aqui no post para não ficar muito grande... mas tem ao todo 15 campos no formulário (as duas combos e mais 13 caixas de texto comuns)
No novoprocessoaction.asp eu coloquei apenas alguns para você ver como estou montando...

Aqui estão os 15..
15 variáveis recebendo 15 valores e passando esses valores para 15 campos da tabela processos.....

Não sei porque esse erro... :blink:

Edição feita por: Nanita, 24/06/2004, 16:18.

Miau...
Um abraço
Nanita

#7 Info_Tec

Info_Tec

    Servo do DEUS VIVO!

  • Usuários
  • 398 posts
  • Sexo:Não informado
  • Localidade:Entre a cadeira e o teclado
  • Interesses:Jesus, minha esposa e filha.<br>ASP, Lógica de programação, Projeto de Estradas, $$$ que tô precisando!

Posted 24/06/2004, 16:22

Numero de valores e campos de destino não conferem!, Verifique os valores numerais, algum deles está pasando "," mande trocar para ponto ou use as propriedades do RecordSet.
A cada minuto está mais perto.
Aceite JESUS como seu único e suficiente salvador!
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
Fórum HOSANAS, venha conversar e se engrandecer com a palavra de DEUS.
Host: ASPECTO, Hospedagem ASP com qualidade e bom preço.

#8 Nanita

Nanita

    Turista

  • Usuários
  • 37 posts
  • Sexo:Não informado

Posted 24/06/2004, 16:30

Numero de valores e campos de destino não conferem!, Verifique os valores numerais, algum deles está pasando "," mande trocar para ponto ou use as propriedades do RecordSet.

Desculpe, mas, como assim?




Estou iniciando, sorry! :)

Até mais
Miau...
Um abraço
Nanita

#9 Info_Tec

Info_Tec

    Servo do DEUS VIVO!

  • Usuários
  • 398 posts
  • Sexo:Não informado
  • Localidade:Entre a cadeira e o teclado
  • Interesses:Jesus, minha esposa e filha.<br>ASP, Lógica de programação, Projeto de Estradas, $$$ que tô precisando!

Posted 24/06/2004, 16:55

Antes de executar seu insert coloque:
Response.Write SQL

Response.End
E poste aqui.
A cada minuto está mais perto.
Aceite JESUS como seu único e suficiente salvador!
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
Fórum HOSANAS, venha conversar e se engrandecer com a palavra de DEUS.
Host: ASPECTO, Hospedagem ASP com qualidade e bom preço.

#10 Nanita

Nanita

    Turista

  • Usuários
  • 37 posts
  • Sexo:Não informado

Posted 25/06/2004, 07:57

Pessoal, valeu pela mãozona que deram...

Encontrei o maledeto...
nem sintaxe, nem banco, nem nada... uma vírgula em lugar errado! :blink:


Obrigada a todos.

------------------------------------------------
Por favor, não poste seguidamente. Para adicionar mais informações, edite a mensagem.
------------------------------------------------

Agora outro probleminha!


Alguns campos do formulário não precisam ser preenchidos e outros são obrigatórios...

Como eu faço para indicar isso no código?

Edição feita por: LeoB, 25/06/2004, 13:17.

Miau...
Um abraço
Nanita




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq