• Jueves 14 de Noviembre de 2024, 19:13

Autor Tema:  Please Ayudenme  (Leído 4978 veces)

coriatj

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Please Ayudenme
« en: Domingo 15 de Octubre de 2006, 22:42 »
0
hola mi problema es:

tengo una base de datos y dos tablas en ella, kiero en visual basic poder preguntar una matricula de mi alumno y ke de una tabla kon esta matricula me mande unos datos y ke de la otra tabla me mande los otros datos...  como es el codigo alguien puede ayudarme?  

en la forma tengo:

                TXTMATRICULA.Text
                TXTNOMBRE.Text
                TXTPATERNO.Text
                TXTMATERNO.Text
                TXTGRUPO.Text
                 **** estos los mando a llamar de una tabla
                txtmes
                txtmstatus
                  ****  estos dos ultimos los mando a llamar de otra tabla

ambas tablas tienen el campo matricula con este campo es komo las kiero relacionar..
 



les mando este pedaso de codigo ke ya tengo y les adjunto el archivo de mi programa tambien...  gracias




Private Sub CMDBUSCAR_Click()
If TXTBUSCAR.Text = "" Then
        MsgBox "Escribe el codigo a buscar", vbInformation
        Exit Sub
    End If
    With Data1
        .Recordset.MoveFirst
        For X = 0 To .Recordset.RecordCount - 1
           If Data1.Recordset!MATRICULA & "" = TXTBUSCAR.Text Then
                TXTMATRICULA.Text = .Recordset!MATRICULA & ""
                TXTNOMBRE.Text = .Recordset!NOMBRE & ""
                TXTPATERNO.Text = .Recordset!AP_PATERNO & ""
                TXTMATERNO.Text = .Recordset!AP_MATERNO & ""
                TXTGRUPO.Text = .Recordset!GRUPO & ""
            End If
        .Recordset.MoveNext
        Next X
       
    End With
   
End Sub
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Please Ayudenme
« Respuesta #1 en: Lunes 16 de Octubre de 2006, 02:02 »
0
no he descargado el archivo que adjuntaste pero porque no haces un findfirst:

data1.recordsource = "mitabla"
data1.recordset.findfirst "Matricula='" & txtbuscar & "'"
if data1.recordset.nomatch then
   msgbox "no se encontro resultado"
else
  msgbox "hola :P"
end if

o si estas usando un dbgrid para mostrar la tabla por ejemplo puedes hacer un query con el evento change de tu textbox :P algo asi

data1.RecordSource = "SELECT * FROM mitabla WHERE Matricula LIKE  '" & txtbuscar & "*'"
data1.refresh :P
espero haberte ayudado

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Please Ayudenme
« Respuesta #2 en: Lunes 16 de Octubre de 2006, 05:22 »
0
Cita de: "coriatj"
les mando este pedaso de codigo ke ya tengo y les adjunto el archivo de mi programa tambien...  gracias

Adjuntaste el puro proyecto, pedazo es con Z y es que no ke etc.. :P

es sencillo mira tu base de datos debe de estar asi

Tabla: Alumnos
MATRICULA
NOMBRE
PATERNO
MATERNO
GRUPO

Tabla: Otros_Datos
MATRICULA
MES
STATUS

Debes de tener el campo de la matricula para poder relacionar...
entonces puedes buscar por SQL

Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Sub Command1_Click()
  5. Dim ls_Matricula As String, ls_SQL As String
  6.    
  7.     ls_Matricula = Trim(txtBuscar)
  8.    
  9.     ls_SQL = "SELECT alumnos.matricula,alumnos.nombre,alumnos.paterno,alumnos.materno,alumnos.grupo,otros_datos.mes,otros_datos.status "
  10.     ls_SQL = ls_SQL & "FROM Alumnos,Otros_Datos WHERE Alumnos.Matricula=Otros_Datos.Matricula and Alumnos.Matricula='" & ls_Matricula & "'"
  11.    
  12.    
  13.     With Me.Data1
  14.         Set .Recordset = .Database.OpenRecordset(ls_SQL, dbOpenDynaset)
  15.          
  16.          'Evitar que Falle el RecorCount :P
  17.         '====================================
  18.         .Recordset.MoveLast
  19.         .Recordset.MoveFirst
  20.         '====================================
  21.        
  22.         If .Recordset.RecordCount > 0 Then
  23.             TXTMATRICULA.Text = .Recordset!MATRICULA
  24.             TXTNOMBRE.Text = .Recordset!NOMBRE
  25.             TXTPATERNO.Text = .Recordset!PATERNO
  26.             TXTMATERNO.Text = .Recordset!MATERNO
  27.             TXTGRUPO.Text = .Recordset!GRUPO
  28.        Else
  29.             MsgBox ("No matricula no encontrada")
  30.        End If
  31.     End With
  32. End Sub
  33.  
  34.  

Suerte!
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

coriatj

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Please Ayudenme
« Respuesta #3 en: Lunes 16 de Octubre de 2006, 07:27 »
0
hola  gracias a ambos por sus consejos y las correcciones a la ortografia...  

F_Tanori me marca un error a la hora de querer  implementar el codigo que me pasaste este es el error


run-time error '3061':

too few parameters. expected 5.

este es el error que me marca   pudieras  ayudarme nuevamente  gracias

coriatj

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Please Ayudenme
« Respuesta #4 en: Lunes 16 de Octubre de 2006, 07:37 »
0
F_Tanori   NO TE DIJE EN KE LINEA  ME MARCA EL ERROR....  SORRY ES EN ESTA

Set .Recordset = .Database.OpenRecordset(ls_SQL, dbOpenDynaset)


GRACIAS

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Please Ayudenme
« Respuesta #5 en: Lunes 16 de Octubre de 2006, 08:09 »
0
que base de datos es?
como tienes las tablas?
que tipo de datos son los campos?

:)
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

coriatj

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Please Ayudenme
« Respuesta #6 en: Lunes 16 de Octubre de 2006, 23:05 »
0
F_Tanori  


la base de datos se llama principal

una tabla se llama ALUMNOS  Y la otra se llama MESES

y todos los campos son de tipo TEXT

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Please Ayudenme
« Respuesta #7 en: Martes 17 de Octubre de 2006, 03:01 »
0
A mi no me marca ningun error debe ser que en un campo de tipo text no estas utilizando las comillas



mira te dejo un ejemplo a ver si te sirve



Suerte
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

buhito

  • Miembro MUY activo
  • ***
  • Mensajes: 103
    • Ver Perfil
Re: Please Ayudenme
« Respuesta #8 en: Miércoles 18 de Octubre de 2006, 23:07 »
0
:huh: rayos a el si lo ayudan

quizas la pregunta era mas corta
programador rebelde (quiere decir no engrandecido con ego barato)

messenger rockero y programero nirvbuho@hotmail.com

coriatj

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Please Ayudenme
« Respuesta #9 en: Miércoles 18 de Octubre de 2006, 23:22 »
0
F_Tanori  BUEN DIA...

OYE ABUSANDO DE TU AMABILIDAD OTRA PREGUNTA:

ESTE ES EL CODIGO KE ME PASASTE ADAPTADO AL MIO LO KE ME FALTRA ES HACER KE ME DESPLIEGUE TODOS LOS MESES DE ESE ALUMNO KE TENGAN UN SALDO MAYOR A 0 Y KE SE VAYAN A VENCER O ESTEN VENCIDO....  YA LE INTENTE Y LA VDD NO ME HA SALIDO..  GRACIAS POR TU TIEMPO..
JAVIER CORIA



Private Sub CMDBUSCAR_Click()
 Dim CONTADOR As Integer
Dim ls_Matricula As String, ls_SQL As String
Dim X As Integer
Dim A As Integer
   
   ls_Matricula = Trim(TXTBUSCAR)
   
   ls_SQL = "SELECT ALUMNOS.MATRICULA,ALUMNOS.NOMBRE,ALUMNOS.AP_PATERNO,ALUMNOS.AP_MATERNO,ALUMNOS.GRUPO,ALUMNOS.INSCRIPCION,MESES.MES,MESES.MSTATUS,MESES.SALDO,MESES.VENCIMIENTO "
   ls_SQL = ls_SQL & "FROM ALUMNOS,MESES WHERE ALUMNOS.MATRICULA=MESES.MATRICULA AND MESES.SALDO > '0' AND MESES.VENCIMIENTO >'&DATE&' and ALUMNOS.MATRICULA='" & ls_Matricula & "'"
   
   
   With Me.Data1
      Set .Recordset = .Database.OpenRecordset(ls_SQL, dbOpenDynaset)
       
        ''IF 1
        If Not .Recordset.EOF Then
                'Evitar que Falle el RecorCount :P
            '====================================
            .Recordset.MoveLast
            .Recordset.MoveFirst
            '====================================
     
            ''IF 2
            If .Recordset.RecordCount > 0 Then
         
                TXTMATRICULA.Text = .Recordset!MATRICULA
                TXTNOMBRE.Text = .Recordset!NOMBRE
                TXTPATERNO.Text = .Recordset!AP_PATERNO
                TXTMATERNO.Text = .Recordset!AP_MATERNO
                TXTGRUPO.Text = .Recordset!GRUPO
                 
               
                ''IF 3
                If Not .Recordset!INSCRIPCION = 0 Then
                    X = 1
                    GRDOTRO.TextMatrix(X, 1) = .Recordset!INSCRIPCION
                    GRDOTRO.TextMatrix(X, 0) = "INSCRIPCION"
                    CONSULTA.GRDOTRO.ColWidth(0) = 1300
               
                      ''IF 4
                    While .Recordset!SALDO > 0 And .Recordset!VENCIMIENTO > Date
                         
                         X = X + 1
                        GRDOTRO.TextMatrix(X, 0) = .Recordset!MES
                        GRDOTRO.TextMatrix(X, 1) = .Recordset!SALDO
                        ''TERMINA IF 4
                    Wend
                     
                         
                Else
                    Select Case .Recordset!SALDO
                        Case Is > 0
                        For A = 1 To 4
                            GRDOTRO.TextMatrix(1, 0) = .Recordset!MES
                            GRDOTRO.TextMatrix(1, 1) = .Recordset!SALDO
                        Next A
                    End Select
                    ''TERMINA IF 3
                End If
             
                 ''TERMINA IF 2
            End If
             
        Else
           MsgBox ("No matricula no encontrada")
         
        ''TERMINA IF 1
        End If
   End With
End Sub

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Please Ayudenme
« Respuesta #10 en: Jueves 19 de Octubre de 2006, 07:00 »
0
Hola

Mira, hay algunos detalles, si el campo del saldo es Numerico (que seria los mas logico :P) no es necesario que le pongas las comillas (')
sino lo es, es necesario que lo hagas porque no es lo mismo ( Saldo >'0' ) que (Saldo > 0) ahora la matriz (FlexGrid) no se llena solo

Necesitas, indicarle las columnas y filas (Cols,Rows) para poder llenarlo como matriz

Ej.
Grid.Rows=10
Grid.Cols=10

tienes un ciclo que necesitas moverte de registro porque si no siempre estas comparando el mismo,
y nunca lo va romper

Código: Text
  1.  
  2. While .Recordset!SALDO > 0 And .Recordset!VENCIMIENTO > Date And Not .Recordset.EOF
  3.     X = X + 1
  4.     GRDOTRO.TextMatrix(X, 0) = .Recordset!MES
  5.     GRDOTRO.TextMatrix(X, 1) = .Recordset!SALDO
  6.     .Recordset.MoveNext '<---- Moverse al siguiente registro
  7. Wend
  8.  
  9.  


Aqui vuelves a buscar lo mismo Saldo>0 y haces un ciclo que no hace nada solo reescribe en las mismas celdas
4 veces supongo que era algo como GRDOTRO.TextMatrix(1, A) = .Recordset!MES no pusiste la variable

Código: Text
  1.  
  2. Select Case .Recordset!SALDO
  3. Case Is > 0
  4.     For A = 1 To 4
  5.         GRDOTRO.TextMatrix(1, 0) = .Recordset!MES  '<--------- La misma celda en todas las iteraciones
  6.         GRDOTRO.TextMatrix(1, 1) = .Recordset!SALDO'<--------
  7.     Next A
  8. End Select
  9.  
  10.  

Lo que opino es que no es necesario, llenar el grid en forma de matriz si el resultado (SQL) ya te devolveria la información
solicitada, Bastaria con colocar en la propiedad DataSourece de FlexGrid el Data, ¿no creees? (o tal vez satisface lo requerido) :ph34r:
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

coriatj

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Please Ayudenme
« Respuesta #11 en: Sábado 21 de Octubre de 2006, 04:03 »
0
hola  F_Tanori ya corregi todo lo que me dijiste  y si salio  al flexgrid le puse en la propiedad DataSourece  le puse data1.

ahora kiero en el   WHERE DEL SELECT  agregarle and MESES.VENCIMIENTO < '&DATE&'  esta seria otra condicion aparte de las que ya tiene pero me marca un error...


too few parameters, EXPECTED 1.



Y ME LO MARCA EN EL    Set .Recordset = .Database.OpenRecordset(ls_SQL, DBOPENDYNASET)




ESTE ES EL CODIGO KE TENGO EN LA FUNCION BUSCAR.....


Dim CONTADOR As Integer
Dim ls_Matricula As String, ls_SQL As String
Dim X As Integer
Dim A As Integer
   
   ls_Matricula = Trim(TXTBUSCAR)
   
   ls_SQL = "SELECT ALUMNOS.MATRICULA,ALUMNOS.NOMBRE,ALUMNOS.AP_PATERNO,ALUMNOS.AP_MATERNO,ALUMNOS.GRUPO,ALUMNOS.INSCRIPCION,MESES.MES,MESES.MSTATUS,MESES.SALDO,MESES.VENCIMIENTO "
   ls_SQL = ls_SQL & "FROM ALUMNOS,MESES "
   ls_SQL = ls_SQL & "WHERE ALUMNOS.MATRICULA=MESES.MATRICULA AND MESES.SALDO > 0  and ALUMNOS.MATRICULA='" & ls_Matricula & "'"
   
   
   ''AND MESES.VENCIMIENTO<'&DATE&'
   
   With Me.Data1
      Set .Recordset = .Database.OpenRecordset(ls_SQL)
       
        ''IF 1
        If Not .Recordset.EOF Then
                'Evitar que Falle el RecorCount :P
            '====================================
            .Recordset.MoveLast
            .Recordset.MoveFirst
            '====================================
     
            ''IF 2
            If .Recordset.RecordCount > -1 Then
         
                TXTMATRICULA.Text = .Recordset!MATRICULA
                TXTNOMBRE.Text = .Recordset!NOMBRE
                TXTPATERNO.Text = .Recordset!AP_PATERNO
                TXTMATERNO.Text = .Recordset!AP_MATERNO
                TXTGRUPO.Text = .Recordset!GRUPO
                 
                 ''TERMINA IF 2
            End If
             
        Else
           MsgBox ("No matricula no encontrada")
         
        ''TERMINA IF 1
        End If
   End With



TE AGRADESCO  TU AYUDA...

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Please Ayudenme
« Respuesta #12 en: Sábado 21 de Octubre de 2006, 05:26 »
0
Estas Concatenando mal...


MESES.VENCIMIENTO < '&DATE&'   '<---- Esto no es válido


debe ser ...

"MESES.VENCIMIENTO < '" <---- Es Una cadena
Date <--es una funcion que te dara la fecha
"'" <-----Es otra cadena


No te digo esto porque pienso que no lo sabes sino que creo que estas confundido mira, son tres cadenas independientes
para pegarlas (& concatenar) las tres se hace asi

"MESES.VENCIMIENTO < '" & DATE &"'"


Cadena1
Cadena2( en este caso valor de la funcion)
Cadena3
Concatenar


Código: Text
  1.  
  2. ls_SQL = &#34;SELECT ALUMNOS.MATRICULA,ALUMNOS.NOMBRE,ALUMNOS.AP_PATERNO,ALUMNOS.AP_MATERNO,ALUMNOS.GRUPO,ALUMNOS.INSCRIPCION,MESES.MES,MESES.MSTATUS,MESES.SALDO,MESES.VENCIMIENTO &#34;
  3. ls_SQL = ls_SQL & &#34;FROM ALUMNOS,MESES &#34;
  4. ls_SQL = ls_SQL & &#34;WHERE ALUMNOS.MATRICULA=MESES.MATRICULA AND MESES.SALDO &#62; 0 and MESES.VENCIMIENTO&#62;'&#34;& Date &&#34;' and ALUMNOS.MATRICULA='&#34; & ls_Matricula & &#34;'&#34;
  5.  
  6.  

Suerte
Espero haberte ayudado
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

coriatj

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Please Ayudenme
« Respuesta #13 en: Sábado 21 de Octubre de 2006, 07:21 »
0
GRACIAS  F_Tanori
MIRA YA HICE LO QUE  ME SUGERISTE....  PERO AHORA NO ME ESTA DESPLEGANDO NADA  NOOOOOOOO!


TE VOY A MANDAR LOS ARCHIVOS DEL PSEUDO PROGRAMA QUE ESTOY TRATANDO DE HACER PARA VER SI ME ENCUENTRAS EL ERROR PLEASE....
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.