Ir para conteúdo

Arquivado

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

tuhajo

Split de 2 campos

Recommended Posts

Tenho uma página com 2 campos que são SELECT MULTIPLE.

Estou com dúvida quando recebo os valores para incluir na tabela. Como faço para receber 2 campos?

Pois do jeito que está meu código ele está dando o erro: Subscript out of range: 'x'

Segue o código:


codDiaMes         = split(request.Form("codDiaMes"),",")
codDiaSemana      = split(request.Form("codDiaSemana"),",")

AbreConexao

For x=0 to UBound(codDiaMes)

    data_schedule = "INSERT INTO DATA_SCHEDULE(NUM_SEQ_DATA_SCHEDU, NUM_SEQ_PROGRAMA, NUM_DIA_MES, NUM_DIA_SEMANA, "&_
                    "IND_DIARIO, DAT_INCL, INTMATRICULA_INCL, DAT_ALTER, INTMATRICULA_ALTER) " &_
                    "VALUES (S_NUM_SEQ_DATA_SCHEDU.NEXTVAL,"&codPrograma&",'"&trim(codDiaMes(x))&"','"&trim(codDiaSemana(x))&"',"&chk_todos&",SYSDATE,'"&txtMatricula&"',SYSDATE,'"&txtMatricula&"')"
    Set RsDataSchedule = ConBanco.execute(data_schedule)

next

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, antes de inserir na base de dados teste as duas arrays, o modo que está a fazer elas têm que ter o tamanho igual, verifique os índices das duas antes da inserção.

 

ex:

 


For x=0 to UBound(codDiaMes)

response.write codDiaMes(x)&"<br />"

next

For y=0 to UBound(codDiaSemana)

response.write codDiaSemana(y)&"<br />"

next

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, antes de inserir na base de dados teste as duas arrays, o modo que está a fazer elas têm que ter o tamanho igual, verifique os índices das duas antes da inserção.

 

Nesse caso o tamanho delas não é igual. Como faço nesse caso???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de enviar os dados para essa página, assegure-se que os dados vão correctamente para as duas arrays para o tamanho bater certo, se não terá que fazer condições antes de inserir na tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de enviar os dados para essa página, assegure-se que os dados vão correctamente para as duas arrays para o tamanho bater certo, se não terá que fazer condições antes de inserir na tabela.

 

 

Então... já verifiquei e os tamanhos são diferentes. Minha dúvida é como fazer essa condição antes de inserir.

Grata.

 

Alguém pode me ajudar a resolver esse problema?

Grata.

 

Por Favor, alguém tem solução para este problema???

Grata.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, explique como quer inserir os dados na base de dados os campos diames e diasemana, pois dessa maneira as arrays não sendo do mesmo tamanho, os registos na base de dados também não iam bater certo, exemplo:

 


arrdiames(1,2,3,4,5,6)
arrdiasemana(1,2,3,4)

ao inserir o diames 5 e 6 o diasemana não teria valor? isto é um exemplo como a suas arrays devem estar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, explique como quer inserir os dados na base de dados os campos diames e diasemana, pois dessa maneira as arrays não sendo do mesmo tamanho, os registos na base de dados também não iam bater certo, exemplo:

 


arrdiames(1,2,3,4,5,6)
arrdiasemana(1,2,3,4)

ao inserir o diames 5 e 6 o diasemana não teria valor? isto é um exemplo como a suas arrays devem estar.

 

É isso mesmo... os campos são independentes... não necessariamente tem que ter o mesmo tamanho. Mas é inserido na mesma tabela.

Essa é minha dúvida, pois o insert fica dentro do for e como vou fazer esse "for" sendo que os campos tem tamanhos diferentes?

Grata.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas, mas mesmo preenchendo a array pode induzir em erro, imagine que na arrdiasemana(5,6) preenchemos esses índices com valores nulos e assim teríamos as arrays do mesmo tamanho, ao inserir o registo, o valor do seu 2ºselect poderia não corresponder ao que o utilizador escolheu do 1º select, ou seja estava a inserir no primeiro campo a valor do 1ºselect correcto, mas poderia estar a inserir no segundo campo um valor errado que era referente ao 2ºselect.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas, mas mesmo preenchendo a array pode induzir em erro, imagine que na arrdiasemana(5,6) preenchemos esses índices com valores nulos e assim teríamos as arrays do mesmo tamanho, ao inserir o registo, o valor do seu 2ºselect poderia não corresponder ao que o utilizador escolheu do 1º select, ou seja estava a inserir no primeiro campo a valor do 1ºselect correcto, mas poderia estar a inserir no segundo campo um valor errado que era referente ao 2ºselect.

 

 

Desculpa Soleric, mas não entendi nada.

Grata.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, insira os dados então como quer com o seguinte ciclo, mas confirme se está tudo certo mesmo,

 


array1 = array(1,2,3,4,5,6)
array2 = array(1,2,3,4)

for k = lbound(array1) to ubound(array1)
	tam = ubound(array2)
	valorarray2 = ""
	if k <= tam then
		valorarray2 = array2(k)
	end if
	response.write array1(k)&" - "&valorarray2&"<br />"
'sql="..."

	
next


Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, insira os dados então como quer com o seguinte ciclo, mas confirme se está tudo certo mesmo,

 


array1 = array(1,2,3,4,5,6)
array2 = array(1,2,3,4)

for k = lbound(array1) to ubound(array1)
	tam = ubound(array2)
	valorarray2 = ""
	if k <= tam then
		valorarray2 = array2(k)
	end if
	response.write array1(k)&" - "&valorarray2&"<br />"
'sql="..."

	
next


Continua dando o erro: Subscript out of range: 'x'

 

Será que é pq o valorarray2 está vindo vazio??? Se for, como posso resolver isso?

Porque o eles podem ser nulos tbm.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, aqui não dá erro, nesse exemplo mesmo que array2 não contenha nada ele funciona, o que pode estar a acontecer é que a sua array2 seja maior que a array1, ai nesse exemplo estamos a testar partindo do principio que a array1 é maior que a segunda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, aqui não dá erro, nesse exemplo mesmo que array2 não contenha nada ele funciona, o que pode estar a acontecer é que a sua array2 seja maior que a array1, ai nesse exemplo estamos a testar partindo do principio que a array1 é maior que a segunda.

 

Olá... não... o array2 é menor que o array1.

Olha o código:

for x = lbound(codDiaMes) to ubound(codDiaMes)        
        tam = ubound(codDiaSemana)        
        valorarray2 = ""        
        if x <= tam then                
            valorarray2 = codDiaSemana(x)                
        end if        
       
        data_schedule = "INSERT INTO DATA_SCHEDULE(NUM_SEQ_DATA_SCHEDU, NUM_SEQ_PROGRAMA, NUM_DIA_MES, NUM_DIA_SEMANA, "&_
                        "IND_DIARIO, DAT_INCL, INTMATRICULA_INCL, DAT_ALTER, INTMATRICULA_ALTER) " &_
                        "VALUES (S_NUM_SEQ_DATA_SCHEDU.NEXTVAL,"&codPrograma&",'"&trim(codDiaMes(x))&"','"&trim(codDiaSemana(x))&"', "&_
                        ""&chk_todos&",SYSDATE,'"&txtMatricula&"',SYSDATE,'"&txtMatricula&"')"
        Set RsDataSchedule = ConBanco.execute(data_schedule)

    next

Sendo que codDiaMes tem 31 valores e codDiaSemana tem 7 valores.

 

 

Olá, aqui não dá erro, nesse exemplo mesmo que array2 não contenha nada ele funciona, o que pode estar a acontecer é que a sua array2 seja maior que a array1, ai nesse exemplo estamos a testar partindo do principio que a array1 é maior que a segunda.

 

Olá... não... o array2 é menor que o array1.

Olha o código:

for x = lbound(codDiaMes) to ubound(codDiaMes)        
        tam = ubound(codDiaSemana)        
        valorarray2 = ""        
        if x <= tam then                
            valorarray2 = codDiaSemana(x)                
        end if        
       
        data_schedule = "INSERT INTO DATA_SCHEDULE(NUM_SEQ_DATA_SCHEDU, NUM_SEQ_PROGRAMA, NUM_DIA_MES, NUM_DIA_SEMANA, "&_
                        "IND_DIARIO, DAT_INCL, INTMATRICULA_INCL, DAT_ALTER, INTMATRICULA_ALTER) " &_
                        "VALUES (S_NUM_SEQ_DATA_SCHEDU.NEXTVAL,"&codPrograma&",'"&trim(codDiaMes(x))&"','"&trim(codDiaSemana(x))&"', "&_
                        ""&chk_todos&",SYSDATE,'"&txtMatricula&"',SYSDATE,'"&txtMatricula&"')"
        Set RsDataSchedule = ConBanco.execute(data_schedule)

    next

Sendo que codDiaMes tem 31 valores e codDiaSemana tem 7 valores.

 

 

Oi saloeric... você tinha razão... funcionou!!! Eu tinha esquecido de trocar o nome das variáveis no insert!!!!

MUITO OBRIGADA PELA AJUDA!!!

 

oi saloeric... estou com o mesmo problema mas com outra situação.

 

Tenho 2 campos, 1 checkbox e 1 campo texto. Eles tem a mesma quantidade como segue no código abaixo:

<tr>
    <td colspan="2"><input name="chk_tipo_servico" type="checkbox" tabindex="16" value="<%=codTipoServico%>"><%=strTipoServico %></td>
    <td colspan="3"><input name="txtObsTipoServico" id="txtObsTipoServico" type="text" size="60" tabindex="17"></td>
</tr>

Só que neste caso se eu selecionar 3 checkbox, ele traz os 3 que selecionei mas traz todos os campos textos.

Como faço para que ele traga somente os campos textos do checkbox que selecionei?

Já tentei de várias formas mas não consegui.

Grata.

 

Alguém tem solução para o problema acima?

Grata.

 

Pessoal, estou precisando de ajuda urgente!!!!

Alguém sabe a solução para o problema acima???

Desde já agradeço!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, faça isso com javascript, do género se a pessoa clicar num checkbox o textbox fica habilitado também, nos checboxes que não tiveram marcados atribua aos campos text o atributo disabled, dessa maneira não vão os dados, com jquery é simples fazer.ex:

 


	$(".xeke").click( function () {
 		if($(this).is(':checked')){
			$(this).next("input").removeAttr("disabled");
		}else{
			$(this).next("input").attr("disabled","true");
			$(this).next("input").val("");
		}
	});


	<input type="Checkbox" class="xeke" name="nome1" /> <input type="Text" disabled="true" name="texto1" /><br />
	<input type="Checkbox" class="xeke" name="nome2" /> <input type="Text" disabled="true" name="texto2" /><br />
	<input type="Checkbox" class="xeke" name="nome3" /> <input type="Text" disabled="true" name="texto3" /><br />



Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, faça isso com javascript, do género se a pessoa clicar num checkbox o textbox fica habilitado também, nos checboxes que não tiveram marcados atribua aos campos text o atributo disabled, dessa maneira não vão os dados, com jquery é simples fazer.ex:

 


	$(".xeke").click( function () {
 		if($(this).is(':checked')){
			$(this).next("input").removeAttr("disabled");
		}else{
			$(this).next("input").attr("disabled","true");
			$(this).next("input").val("");
		}
	});


	<input type="Checkbox" class="xeke" name="nome1" /> <input type="Text" disabled="true" name="texto1" /><br />
	<input type="Checkbox" class="xeke" name="nome2" /> <input type="Text" disabled="true" name="texto2" /><br />
	<input type="Checkbox" class="xeke" name="nome3" /> <input type="Text" disabled="true" name="texto3" /><br />



 

Só tem como fazer dessa forma???

tentei fazer aqui mas não deu certo, não entendi direito!!!

 

Não aconteceu nada... só ficou com o campo texto desabilitado, independente se o check estiver marcado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi saloeric, muito obrigada por estar me ajudando!!!

 

Esse é o código que eu tinha feito sem o javascript:

 

Formulário onde tem os checks e texts:

<tr bgcolor="#DADADA">
    <td colspan="2">TIPO DE ATIVIDADE</td>
    <td colspan="3">OBSERVAÇÃO</td>
</tr>
<%
sql_tipo_servico = "SELECT RV_LOW_VALUE, RV_MEANING FROM CG_REF_CODES WHERE UPPER(RV_DOMAIN) ='COD_SERVICO_HELP_DESK'"
Set RsTipoServico = ConBanco.Execute (sql_tipo_servico)
                                            
if (not RsTipoServico.eof) then
                                                
    while (not RsTipoServico.eof)
          codTipoServico = RsTipoServico("RV_LOW_VALUE")
          strTipoServico = RsTipoServico("RV_MEANING")
%>
<tr>
    <td colspan="2"><input name="chk_tipo_servico" type="checkbox" tabindex="16" value="<%=codTipoServico%>"><%=strTipoServico %></td>
    <td colspan="3"><input name="txtObsTipoServico" id="txtObsTipoServico" type="text" size="60" tabindex="17"></td>
</tr>
<%
    RsTipoServico.movenext
    wend
end if
%>

Código onde insere:

chk_tipo_servico     = split(request.Form("chk_tipo_servico"),",")
txtObsTipoServico    = split(request.Form("txtObsTipoServico"),",")

For x=0 to UBound(chk_tipo_servico)         
        
    'Insere os serviços realizados na visita técnica.
    serv_helpdesk = "INSERT INTO SERVICO_REALIZADO_HELP_DESK(NUM_SEQ_VISITA_TECNICA, COD_SERV_HELP_DESK, DSC_OBS_SERV_HELP_DESK, DAT_INCL, INTMATRICULA_INCL) VALUES ("&strNumSeq&",'"&chk_tipo_servico(x)&"','"&txtObsTipoServico(x)&"',SYSDATE,'"&txtMatricTecnico&"')"
        
    Set RsServHelpDesk = ConBanco.execute(serv_helpdesk)
next

Agora o código com a alteração que você me passou:

Formulário onde tem os checks e texts:

<script language="javascript">
$(".xeke").click( function () {                
    if($(this).is(':checked')){                        
        $(this).next("input").removeAttr("disabled");                
    }else{                        
        $(this).next("input").attr("disabled","true");                        
        $(this).next("input").val("");                
    }        
}
);

</script>


<tr bgcolor="#DADADA">
    <td colspan="2">TIPO DE ATIVIDADE</td>
    <td colspan="3">OBSERVAÇÃO</td>
</tr>
<%
sql_tipo_servico = "SELECT RV_LOW_VALUE, RV_MEANING FROM CG_REF_CODES WHERE UPPER(RV_DOMAIN) ='COD_SERVICO_HELP_DESK'"
Set RsTipoServico = ConBanco.Execute (sql_tipo_servico)
                                            
if (not RsTipoServico.eof) then
                                                
    while (not RsTipoServico.eof)
          codTipoServico = RsTipoServico("RV_LOW_VALUE")
          strTipoServico = RsTipoServico("RV_MEANING")
%>
<tr>
    <td colspan="2"><input name="chk_tipo_servico" type="checkbox" tabindex="16" value="<%=codTipoServico%>" class="xeke"><%=strTipoServico %></td>
    <td colspan="3"><input name="txtObsTipoServico" id="txtObsTipoServico" type="text" size="60" tabindex="17" disabled="true"></td>
</tr>
<%
    RsTipoServico.movenext
    wend
end if
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá, no javascript que passei tem que estar dentro do document ready do jquery, parto do principio que você tem o jquery incluido.

ex:

 

<script type="text/javascript" src="js/jquery.js"></script>
<script language="JavaScript1.2">
$(document).ready(function() {

$(".xeke").click( function () { 
 if($(this).is(':checked')){ 
 $(this).next("input").removeAttr("disabled"); 
 }else{ 
 $(this).next("input").attr("disabled","true"); 
 $(this).next("input").val(""); 
 } 
}
);

});

</script>



Compartilhar este post


Link para o post
Compartilhar em outros sites

olá, no javascript que passei tem que estar dentro do document ready do jquery, parto do principio que você tem o jquery incluido.

ex:

 

<script type="text/javascript" src="js/jquery.js"></script>
<script language="JavaScript1.2">
$(document).ready(function() {

$(".xeke").click( function () { 
 if($(this).is(':checked')){ 
 $(this).next("input").removeAttr("disabled"); 
 }else{ 
 $(this).next("input").attr("disabled","true"); 
 $(this).next("input").val(""); 
 } 
}
);

});

</script>



 

Ah não... desculpe a ignorãncia mas nunca trabalhei com jquery... não sei como funciona!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá é só incluir o arquivo do jquery, faça download dele na página do jquery e depois esse código normalmente põe-se assim ,

 


<!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" lang="pt" xml:lang="pt">
<head>
	<title>...</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="Language" content="pt" />
<meta HTTP-EQUIV="imagetoolbar" CONTENT="no" />
<script type="text/javascript" src="js/jquery.js"></script>
<script language="JavaScript1.2">
$(document).ready(function() {
...
	});
</script>
</head>
<body>
	...

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.