none
Busqueda autocomplementar con sql server 2005 y con asp clasico RRS feed

  • Pregunta

  • Hola buenas tardes tengo la siguiente pantalla:

    y tambien tengo esta otra pantalla en diferente archivo .asp

    Cuenta              Beneficiario

    0123456789     JUAN PEREZ LOPEZ

    5648791424     PETRA LOPEZ PADILLA

    6457852154    JOSEFINA CABRERA LOPEZ

    En este pantalla ya puedo buscar incrementalmente los nombres de los beneficiarios y se va posicionando en cada uno de los nombre que voy tecleando sus letras esto me funciona muy bien. Pero la pregunta es la siguiente como puedo pasar los valores tanto del beneficiario PETRA LOPEZ PADILLA  y numero de cuenta de la lista que me va mostrando del beneficiario y el numero de cuenta a la primera pantalla cuando oprimo el botón de seleccionar de la segunda pantalla.

    ************Codigo de la segunda pantalla**********************

    <%@ LANGUAGE="VBSCRIPT" %>
    <% 
    'Conexion.Open "Provider=SQLOLEDB;DATA SOURCE=192.168.1.138;UID=FONDOA;PWD=ajeno13*;DATABASE=JUZGA"
    Set cn = Server.CreateObject("ADODB.Connection")
    Set RSTMP = Server.CreateObject("ADODB.Recordset")
    cn.Provider = "sqloledb"
    ProvStr = "Server=USER-HP\SQLEXPRESS;Database=JUZGA;UID=FONDOA;PWD=ajeno13*;"
    cn.Open ProvStr
    %>   

    <html>
    <head>
    <form>

    <meta http-equiv="Content-Language" content="es">
    <style>
      body{
      scrollbar-arrow-color: #FFFFFF;
      scrollbar-3dlight-color: #FFFFFF;
      scrollbar-highlight-color: #C0C0C0;
      scrollbar-face-color: #000000;
      scrollbar-shadow-color: #C0C0C0;
      scrollbar-darkshadow-color: #000000;
      scrollbar-track-color: #000000;
      }
      a:link {  font-family: Tahoma, Verdana, Arial; color: #003366; text-decoration: none}
      a:visited {  font-family: Tahoma, Verdana, Arial; color: #003366; text-decoration: none}
      a:hover {  font-family: Tahoma, Verdana, Arial; color: #FF9900}
      a:active {  font-family: Tahoma, Verdana, Arial; color: #003366; text-decoration: none}
      .style1 {
     background-image: url('Imagenes/titulo_1.jpg');
    }
    .style3 {
     background-color: #C0C0C0;
    }
      .style4 {
     background-color: #FFFFFF;
    }
      .style5 {
     text-align: left;
    }
      </style>
    <title>Buscar beneficiario</title>
    <link rel="stylesheet" type="text/css" href="../estilo.css">
    <script>

    function buscar(txt) {
      obj=document.getElementById('tabla');
      for (i=0;ele=obj.getElementsByTagName('tr')[i];i++) {
        celda = ele.getElementsByTagName('td')[1]
        dato = celda.innerHTML;
        iz = dato.substr(0,txt.length);
    //    celda.style.display = (txt==iz) ? '' : 'none';
        ele.style.display = (txt==iz) ? '' : 'none';
      }
    }
    </script>

    <script language="javascript" type="text/javascript">

    function cerrar() {
    window.open('','_parent','');
    window.close();
    }
    </script>

    <body link="#000000" vlink="#000000" alink="#000000" text="#000000" bgcolor="#ffffff" topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0." style="background-image: url('Imagenes/fondo_pagina_new.jpg')" >
    <div align="center">
     <table border="0" id="table1" cellspacing="0" cellpadding="2" class="style1">
      <tr>
       <span lang="es-mx"><br>Cuenta:</span></td>
       <input type="text" onkeyup="buscar(this.value)" class="CUADROTEXTO" size="20" name="T1" style="width: 333px"><span lang="es-mx">
       <input name="Button1" style="width: 90px" type="button" value="Seleccionar" onclick="opener.document.forms.calcform2.benef.value = T1.value; opener.document.forms.calcform2.cuenta.value = T3.value; window.close()"/>
       <input name="T3" style="width: 162px" type="text"></span>
       &nbsp;</tr>  
      <tr>
       <td bgcolor="#FFFFFF" class="TEXTO" colspan="4">
       <div align="center">
        <table id="tabla" border="0" cellspacing="0" cellpadding="2" class="style3">
         <%
         SQL="SELECT * FROM tarjeta ORDER BY beneficiario"
         RSTMP.Open SQL,CN                                    
          WHILE NOT RSTMP.EOF
         %>
         <tr>
             <td class="style3"><%=RSTMP.Fields("tarjeta")%></td>
          <td class="TEXTO"><%=RSTMP.Fields("beneficiario")%></td>
          <td class="TEXTO" style="width: 80px">
         </tr>
         <%
           RSTMP.MoveNext()
          WEND
         RSTMP.Close()
         %>
        </table>
       </div>
       </td>
      </tr>
     </table>
    </div>
    </body>
    </form>
    </head>
    </html>

    Saludos y muchas gracias por su apoyo.

    miércoles, 25 de enero de 2012 21:07

Respuestas

  • Hola Omar Altamirano

    Estas con ASP 3.0 (ASP Clasico) asi que creo que lo que te comenta Juan Manuel de ASP.NET te servira poco y nada ;) 

    Bueno el tema es mas bien Javascript

    • Abres una ventana con window.open para buscar registros (beneficiarios)
    • Quieres una vez que lo encuentres, enviar estos datos a la ventana llamadora

    BUeno, aqui cuando encuentra debes disparar una función en la ventana llamadora y pasandole el objeto o los dos datos que necesita la ventana llamadora (propongo json) pero puede ser un objeto directo de javascript. Ademas te propongo utilizar ID en los controles en vez de los NAME pero bueno mira un ejemplo

    El boton en la pagina de buscar (en la ventana popup) seria asi

    <input name="Button1" style="width: 90px" type="button" value="Seleccionar" onclick=seleccionarBeneficiario();"/>

    Llama a una funcion seleccionarBeneficiario() que debe estar en dicha ventana claro

    function seleccionarBeneficiario(){
    	//Obteniendo los valores
    	//RECOMENDACION: VAlidacion de estos elementos 
    	var nombre = document.getElementById('T1').value;
    	var cuenta = document.getElementById('T3').value;;
    	var beneficiario = {"nombre": nombre, "cuenta": cuenta};
    	
    	//enviando datos a la ventana llamadora
    	window.opener.actualizarBeneficiario(beneficiario);
    	window.close();
    }
    

    Veras que obtengo los objetos HTML textbox como getElementById (coloque el ID con el mismo valor del nombre)
    BUeno esta ventana llama a una funcion enviando parametro beneficiario, esta funcion actualizarBEneficiario debe estar accesible desde la ventana que la llamo.
    Ejemplo:

    function actualizarBeneficiario(beneficiario){
    	//Aqui tienes el objeto json beneficiario 
    	//con beneficiario.nombre y beneficiario.cuenta
    	
    	var txtNombre = document.getElementById('txtNombre');
    	txtNombre.value = beneficiario.nombre;
    }

    BUeno espero que te sea util, de ayuda o guia... avisanos cualquier inconveniente.  

    Un par de recomendaciones

    Recomendación 1: Para organizar un poco mas el codigo te recomiendo que no escribas codigo javascript directamente en lso eventos de los controles, es deficil de leer, debugear, mantener, etc

    Recomendacion 2: Dale una mirada a frameworks javascript, ejemplo jQuery. Es mas facil manipular elementos.

    Te puede servir este post (que si bien es de ASP.NET) en la opcion 4 que es mediante javascript y ventanas popup

    Espero que te sirva de ayuda o guía.


    Jose. A Fernandez | blog: http://geeks.ms/blogs/fernandezja

    domingo, 15 de julio de 2012 15:08

Todas las respuestas

  • Podrías utilizar un control Multiview y pones una pantalla en cada View, y cambias de vista y asignas los datos cuando los necesitas si necesidad de navegar a otra página.

    saludos.

    domingo, 15 de julio de 2012 8:57
  • Hola Omar Altamirano

    Estas con ASP 3.0 (ASP Clasico) asi que creo que lo que te comenta Juan Manuel de ASP.NET te servira poco y nada ;) 

    Bueno el tema es mas bien Javascript

    • Abres una ventana con window.open para buscar registros (beneficiarios)
    • Quieres una vez que lo encuentres, enviar estos datos a la ventana llamadora

    BUeno, aqui cuando encuentra debes disparar una función en la ventana llamadora y pasandole el objeto o los dos datos que necesita la ventana llamadora (propongo json) pero puede ser un objeto directo de javascript. Ademas te propongo utilizar ID en los controles en vez de los NAME pero bueno mira un ejemplo

    El boton en la pagina de buscar (en la ventana popup) seria asi

    <input name="Button1" style="width: 90px" type="button" value="Seleccionar" onclick=seleccionarBeneficiario();"/>

    Llama a una funcion seleccionarBeneficiario() que debe estar en dicha ventana claro

    function seleccionarBeneficiario(){
    	//Obteniendo los valores
    	//RECOMENDACION: VAlidacion de estos elementos 
    	var nombre = document.getElementById('T1').value;
    	var cuenta = document.getElementById('T3').value;;
    	var beneficiario = {"nombre": nombre, "cuenta": cuenta};
    	
    	//enviando datos a la ventana llamadora
    	window.opener.actualizarBeneficiario(beneficiario);
    	window.close();
    }
    

    Veras que obtengo los objetos HTML textbox como getElementById (coloque el ID con el mismo valor del nombre)
    BUeno esta ventana llama a una funcion enviando parametro beneficiario, esta funcion actualizarBEneficiario debe estar accesible desde la ventana que la llamo.
    Ejemplo:

    function actualizarBeneficiario(beneficiario){
    	//Aqui tienes el objeto json beneficiario 
    	//con beneficiario.nombre y beneficiario.cuenta
    	
    	var txtNombre = document.getElementById('txtNombre');
    	txtNombre.value = beneficiario.nombre;
    }

    BUeno espero que te sea util, de ayuda o guia... avisanos cualquier inconveniente.  

    Un par de recomendaciones

    Recomendación 1: Para organizar un poco mas el codigo te recomiendo que no escribas codigo javascript directamente en lso eventos de los controles, es deficil de leer, debugear, mantener, etc

    Recomendacion 2: Dale una mirada a frameworks javascript, ejemplo jQuery. Es mas facil manipular elementos.

    Te puede servir este post (que si bien es de ASP.NET) en la opcion 4 que es mediante javascript y ventanas popup

    Espero que te sirva de ayuda o guía.


    Jose. A Fernandez | blog: http://geeks.ms/blogs/fernandezja

    domingo, 15 de julio de 2012 15:08