Visual Basic - AYUDA

Life is soft - evento anual de software empresarial
 
Vista:

AYUDA

Publicado por SALVADOR (CHAVA) (5 intervenciones) el 27/10/2005 00:44:47
HOLA QUE TAL A TODOS LOS POGRAMADORES NECESITO SU GRANDISIMA AYUDA ESTOY HACIENDO UN PROYECTO EN VISUAL Y VINCULADA EN ACCESS LO QUE QUIERO ES

1RA HACER UNA RELACION DE DOS TABLAS EN ACCESS UNA ES DE ALUMNOS Y OTRA DE LIBROS QUE SOLICITAN EN LA BIBLIOTECA LOS ALUMNOS (A VER SI ME EXPLICO )

2DA

COMO LE HAGO PARA QUE ESA RELACION VINCULAR A VISUAL O SEA QUE EN UN FORMULARIO BUSCAR LOS DATOS DE LA TABLA DE LOS ALUMNOS Y UN BOTON PARA DE AHI SALGA OTRO FORMULARIO Y DE AHI METER LOS DATOS DE LOS LIBROS QUE A SOLICITADO EL ALUMNO Y CUANDO GUARDE ESTE RELACIONADA CON LAS TABLAS Y ASI CUANDO
EL ADMINISTRADOR BUSQUE QUE ALUMNO TIENE PRESTAMOS

EN UN FORMULARIO PUSE UN DATA GRID PARA QUE BUSQUE EL ALUMNO Y LO QUE QUIERO ES CUANDO SELECCIONE EL ALUMNO APARESCA OTRA DATA GRID CON LOS LIBROS PRESTADOS

ESPERO QUE ME HAYA EXPLICADO BIEN ESPERO SU AYUDA PORFAVOR YA QUE ES PARA MIPROYECTO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AYUDA

Publicado por Arnaldo (53 intervenciones) el 27/10/2005 04:09:09
Hola, te mando esto, en un formulario puse dos MSFLEXGRID
En la apertura del formulario cargo el Msflexgrid1 con los datos los alumnos
cuando hago doble click sobre alguna fila de la tabla, el Msflexgrid2 se carga con los datos de libros prestados correspondientes a la seleccion realizada.

Private Sub Form_Load()
Dim rst As New ADODB.Recordset
Dim SQL As String

With MSFlexGrid1
.Rows = 1
.TextMatrix(0, 0) = "Pozo Nombre"
.TextMatrix(0, 1) = "N°"
.TextMatrix(0, 2) = "Sig Prov"
.TextMatrix(0, 3) = "Sig Emp"

.ColWidth(0) = 2550
.ColWidth(1) = 800
.ColWidth(2) = 1000
.ColWidth(3) = 1000

.ColAlignment(0) = 4
.ColAlignment(1) = 4
.ColAlignment(2) = 4
.ColAlignment(3) = 4
End With

With MSFlexGrid2
.Rows = 1
.TextMatrix(0, 0) = "Tipo"
.TextMatrix(0, 1) = "Objetivos"

.ColWidth(0) = 2550
.ColWidth(1) = 2000

.ColAlignment(0) = 4
.ColAlignment(1) = 4
End With
cn.Open "DSN=Nomb_Archivo.mdb"
SQL = "SELECT Alumno.[Nombre_Apellido], Alumno.[Nro ID], Alumno.Telef, " _
& "Alumno.Direccion " _
& "FROM Alumno " _
& "ORDER BY Alumno.[Nro ID];"

rst.CursorType = adOpenStatic
rst.LockType = adLockBatchOptimistic
rst.Open SQL, cn, , adLockBatchOptimistic

If rst.EOF = False Then
rst.MoveFirst
Dim Fila As Variant
While rst.EOF = False
Fila = rst.Fields(0).Value & vbTab & rst.Fields(1).Value & vbTab & rst.Fields _
(2).Value & vbTab & rst.Fields(3).Value
MSFlexGrid1.AddItem Fila
rst.MoveNext
Wend
rst.Close
End If
Set rst = Nothing
'------------------------------------------------------------------------
Private Sub MSFlexGrid1_DblClick()
Dim rst As New ADODB.Recordset
Dim SQL As String

MSFlexGrid2.Clear
MSFlexGrid2.Rows = 1
MSFlexGrid2.TextMatrix(0, 0) = "Tipo"
MSFlexGrid2.TextMatrix(0, 1) = "Objetivos"

aa = MSFlexGrid1.MouseRow
If MSFlexGrid1.MouseRow <> 0 Then

SQL = "SELECT Alumno.[Nombre_Apellido], Alumno.[Nro ID], " _
& "Libros.[N ID], Libros.Nombre " _
& "FROM Alumno " _
& "INNER JOIN Libros ON Alumno.[Nro ID]=Libros.[N ID] " _
& "WHERE (((Alumno.[Nro ID])=" & val(MSFlexGrid1.TextMatrix(aa, 1)) & "));"

rst.CursorType = adOpenStatic
rst.LockType = adLockBatchOptimistic
rst.Open SQL, cn, , adLockBatchOptimistic

If rst.EOF = False Then
Dim Fila As Variant
rst.MoveFirst
While rst.EOF = False
Fila = rst.Fields(2).Value & vbTab & rst.Fields(3).Value
MSFlexGrid2.AddItem Fila
rst.MoveNext
Wend
End If
rst.Close
Set rst = Nothing
End If
End Sub

Declare en cada rutina la conexion con la consulta y el string donde guardo la consulta SQL.
En este caso cada vez que haces doble click sobre la tabla alumnos, haces la consulta. Cualquier cambio que hagas sobre la tabla 2 se puede salbar. llamado a la misma consulta. Es algo que se me ocurrio.
Espero haberte ayudado y no confundido.
A una cosa si vas a hacer consultas SQL y vas a comparar valores del tipo string (filtros por nombre de alumno) tene en cuenta que la sentencia SQL debe tener las " y visual te las va a reconocer como principio o fin de cadena de caracteres.
podes enviarle "' ' " las comillas simples entre (" ") me sirvio. Este ultimo comentario tomalo con pinzas, porque como vez probe me funciono y lo dejes asi, en este caso no investigue otra forma.

Arnaldo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AYUDA

Publicado por Arnaldo (53 intervenciones) el 27/10/2005 04:22:34
Hola me di cuenta que me olvide de algo.
antes de la siguiente linea de codigo, hay que declarar en la misma rutina el tipo
a "cn"
cn.Open "DSN=Nomb_Archivo.mdb"
quedando asi:

Dim cn As New ADODB.Connection

cn.Open "DSN=Nomb_Archivo.mdb"

Me olvide de declararlo en el mensaje anterior. Disculpa.

Arnaldo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar