Datagrid s.o.s

Como estas estoy trabajando con vb6 y access 2000. Tengo una inquietud que es la siguiente.
Tengo un formulario que me pide el código del estudiante y un datagrid que me muestra todo lo que tiene la tabla préstamo (codestudiante, codlibro, fecha) mi idea es la siguiente que cuando yo digite el código del estudiante en el datagrid me muestre los libros que tiene ese estudiante. No he podido hacerlo me gustaría que me ayudaras con el código. Antes me funcionaba con dbgrid pero con datagrid no me funciona.

2 respuestas

Respuesta
1
Como ni el método de acceso a datos que usas ni como pretendes realizar la carga en el grid si por nodos por celdas o simplemente recargando lo más conveniente es que me zipees el proyecto y me lo envíes con una explicación detallada y te lo preparo para que te vaya rodado, y luego comentamos el tema si te parece puedes enviarme el código a [email protected]
Bueno yo tengo en mi formulario un adodc que es el que me enlaza y un datagrid1 este me esta mostrando toda la información que esta contenidad en la tabla préstamo. La idea es que cuando yo digite el código de un alumno en el datagrid1 solo me muestre la información de ese estudiante y no toda la tabla préstamo. Los campos son codestudiante, cod libro, fecha de préstamo. Gracias
Mi consejo es que no enlaces con el control adodc si no que realices una conexión ADO y te en el evento del tecleado del código lances esta función que te he preparado pasándole el código tecleado en el grid para que te cargue los datos, como sugerencia puedes pasar la cadena sql por referencia y te serviría para realizar también el toda clase de listado sobre el grid, imagino que sabes realizar una conexión ADO pero si no es así dímelo y te envío un ejemplo Saludos
Public Function CargaListado(iCodEstudiante as integer)
Dim sSql As String
Dim rs As New ADODB.Recordset
sSql = "SELECT codestudiante, cod_libro, fecha_de_prestamo "
sSql = sSql & "FROM Estudiante Where codestudiante =" & iCodEstudiante
rs.Open sSql, ConexionADO
Set DataGrid.DataSource = rs
Do While rs.State = adStateExecuting
DoEvents
Loop
Set rs = Nothing 'Si desea desconectar el recordset
End Function
Me gustaría que me mandaras un ejemplo muchas gracias
Esto seria un ejemplo completo para abrir conexión y ejecutar una sentencia sobre un recordset amoldalo a la función que te pase Saludos
Dim sCadenaConexion as string
Dim gConexion as connection
Dim sSql as string
Dim rs as adodb.recorset
sCadenaConexion= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BaseDatos\GrutasBD.mdb" & ";Jet OLEDB:Database Password=;"
sSql = "SELECT * from tabla"
set gConexion=new connection
gconexion.open scadenaconexion
'Ejecutar la consulta SQL
Set rs = New ADODB.Recordset
rs.Open sSql, gConexion, adOpenStatic, adLockReadOnly
Set rs = Nothing
gConexion.close
Set gConexion=nothing
'Aqui logicamente pon la ruta de tu base de datos
sCadenaConexion= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BaseDatos\GrutasBD.mdb" & ";Jet OLEDB:Database Password=;"
'La select que quieras ejecutar por ejemplo la anterior que te mande
sSql = "SELECT * from tabla"
set gConexion=new connection
gconexion.open scadenaconexion
'Ejecutar la consulta SQL
Set rs = New ADODB.Recordset
rs.Open sSql, gConexion, adOpenStatic, adLockReadOnly
'Aqui haces lo que necesites con el recordset por ejemplo asignarlo a un grid o a leer los fields, ect
'Despues lo cierras
Set rs = Nothing
gConexion.close
Set gConexion=nothing
Respuesta
1
Bueno en el evento lostfocus del textbox o en un botón arma la instrucción SQL
"SELECT * FROM Prestamo WHERE Codestudiante = " & Text1.text
Y se la asignas a la propiedad DataSource del Datagrid
Saludos
Roberto Alvarado
Cartagena - Colombia
Ok. Mira el código que estoy manejando DATPRESTAMO. Recordset. Sort = "CODLIBRO ASC"
DATPRESTAMO.RecordSource = "SELECT * FROM PRESTAMO WHERE Codestudiante ='" & TXTCODIGO.Text & "ORDER BY [CODLIBRO &"",cnconexion, adOpenStatic, adLockReadOnly"
Set DataGrid1.DataSource = DATPRESTAMO
'DATPRESTAMO.Refresh
'DATPRESTAMO.Recordset.Requery
DataGrid1.Refresh
Donde datprestamo es el data control adodc que lo llame datprestamo. Pero cuando lo ejecuta el datagrid sigue igual no me muestra solo la información del código digitado sino todo lo que tiene la tabla préstamo
Lo primero que yo te diría es que le pongas un espacio antes del ORDER BY, ¿y para queel [ antes de CODLIBRO Y EL &?
Otra cosa si el código del estudiante es de tipo Texto, debe ir entre comillas simples, (') así como lo tienes es numérico. Eso asumo yo.
Saludos
Roberto Alvarado
Cartagena - Colombia
Por favor mandame el código completo ami no me ha querido funcionar. Me sale un menaje de error cuando activo el datprestamo.refresh y el datagrid1 no me muestro lo que quiero sino que sigue mostrando todo lo que tiene la tabla préstamo.
Este seria el código:
DATPRESTAMO.RecordSource = "SELECT * FROM PRESTAMO WHERE Codestudiante ='" & TXTCODIGO.Text & "' ORDER BY CODLIBRO ",cnconexion, adOpenStatic, adLockReadOnly"
Set DataGrid1.DataSource = DATPRESTAMO
'DATPRESTAMO.Refresh
'DATPRESTAMO.Recordset.Requery
Pruébalo ahora a ver si te funciona
Saludos
Roberto Alvarado
Cartagena - Colombia
No me funciono muchas gracias de todos modo
Enviame el código a ver que puede ser, toda la rutina en donde intentas hacer esto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas