HOLA QUE TAL REQUIERO DE TU AYUDA PARA SABER COMO PUEDO EXTRAER REGISTROS DE UNA TABLA CREADA EN ACCESS CON LOS SIGUIENTES CAMPOS NOMBRE DEL ALUMNO ESPAÑOL.MATEMATICAS,HISTORIA,GEOGRAFIA.ETC. EN EL CUAL REGISTRO LAS CALIFICACIONES DE CADA MATERIA POR ALUMNO, Y NECESITO EXTRAER CADA CALIFICACION Y PASARLA A UN FORMULARIO QUE CONTIENE EL FORMATO DE LA BOLETA.QUIERO QUE LAS CALIFICACIONES APARESCAN EN CADA CUADRO DE TEXTO DEL FORMULARIO PARA PODER IMPRIMIRLA.
¿COMO LO HAGO? MANDAME UN EJEMPLO GRCIAS: [email protected] [email protected]
Respuesta de huachanin
1
1
huachanin, Desarrollo de aplicaciones en Visual Basic Mantenimiento y...
Espero que este sencillo ejemplo te sirva de ayuda... 'Asegurate de modificar la constante RUTA_DATABASE 'segun donde tu hayas instalado Visual Basic. ' 'Crea un proyecto EXE Estándard y añade una referencia a... 'Microsoft ActiveX Data Object 2.6 Library 'Agrega el componente... 'Microsoft Datagrid Control OLEDB 'Agrega los siguientes controles al formulario 'Un Label, un TextBox, siete CommandButton y un Datagrid 'con sus nombres por defecto. 'Ademas un Label con (Nombre) lblFieldName, propiedad Index=0 'un TextBox con (Nombre) txtFieldValue, propiedad Index=0 'Pega todo el siguiente codigo en tu formulario 'Cambia la ruta de la base de datos si es necesario Option Explicit Const RUTA_DATABASE = "C:\Archivos de programa\Microsoft Visual Studio\VB98\BIBLIO.MDB" Const TABLA_TITLES = "SELECT * FROM TITLES" Dim rstTitles As ADODB.Recordset Dim booEnlazados As Boolean Private Sub Form_Load() 'cambiando propiedades del control Label1 With Label1 .AutoSize = True .Caption = "Texto a buscar:" .Move 90, 90 End With 'cambiando propiedades del control Text1 With Text1 .Text = "Ingresa aqui el texto que quieres buscar en el campo TITLES..." .Move 90, 330, 4800, 315 End With 'cambiando propiedades del control Command1 With Command1 .Caption = "&Buscar..." .Move 5000, 330, 1400, 315 End With 'cambiando propiedades del control Command2 With Command2 .Caption = "&Detalles..." .Move 90, 750, 1400, 315 End With 'cambiando propiedades del control Command3 With Command3 .Caption = "&Imprimir listado" .Move 1800, 750, 1400, 315 End With With Command4 .Caption = "&First" .Move 3800, 750, 560, 315 End With With Command5 .Caption = "&Next" .Move 4400, 750, 560, 315 End With With Command6 .Caption = "&Prev" .Move 5000, 750, 560, 315 End With With Command7 .Caption = "&Last" .Move 5600, 750, 560, 315 End With With lblFieldName(0) .Move 90, 1200 .AutoSize = True .Caption = "" End With With txtFieldName(0) .Move 2000, 1200, 4400, 315 .Text = "" End With 'cambiando propiedades del control Datagrid1 DataGrid1.Move 90, 1200, 6400, 3310 Me.Move 0, 0, 6680, 5000 'Listar todos los registro de la tabla Titles ListarRegistros TABLA_TITLES End Sub Private Sub Form_Unload(Cancel As Integer) Set rstTitles = Nothing End Sub Private Sub Text1_GotFocus() 'Seleccionar el texto al recibir el enfoque With Text1 .SelStart = 0 .SelLength = Len(Trim(.Text)) End With End Sub 'hace la consulta a la base de datos Private Sub Command1_Click() Dim strWhere As String strWhere = "" If Len(Trim(Text1.Text)) > 0 Then strWhere = " WHERE Title LIKE '%" & Text1.Text & "%'" End If ListarRegistros TABLA_TITLES & strWhere End Sub 'intercambia la vista de detalle y datagrid Private Sub Command2_Click() Static booStatus As Boolean DataGrid1.Visible = booStatus Command2.Caption = IIf(booStatus, "&Detalles...", "&Ver Listado") Command3.Caption = IIf(booStatus, "&Imprimir listado", "&Imprimir registros") booStatus = Not booStatus End Sub Private Sub Command3_Click() 'para los reportes te recomiendo usar el Crystal Report Select Case Command3.Caption Case "&Imprimir listado" 'imprimir registros en forma tabular Case "&Imprimir registro" 'imprimir registros en forma detallada End Select End Sub 'mueve el selector de registros al primer registro Private Sub Command4_Click() If (rstTitles.BOF And rstTitles.EOF) Then Exit Sub rstTitles.MoveFirst End Sub 'mueve el selector de registros al siguiente registro Private Sub Command5_Click() If (rstTitles.BOF And rstTitles.EOF) Then Exit Sub rstTitles.MoveNext If rstTitles.EOF Then rstTitles.MoveLast End Sub 'mueve el selector de registros al anterior registro Private Sub Command6_Click() If (rstTitles.BOF And rstTitles.EOF) Then Exit Sub rstTitles.MovePrevious If rstTitles.BOF Then rstTitles.MoveFirst End Sub 'mueve el selector de registros al ultimo registro Private Sub Command7_Click() If (rstTitles.BOF And rstTitles.EOF) Then Exit Sub rstTitles.MoveLast End Sub 'Procedimiento para obtener los registro de la tabla TITLES Private Sub ListarRegistros(ByVal SentenciaSQL As String) Dim cnConnect As ADODB.Connection Set cnConnect = New ADODB.Connection cnConnect.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _ "Data Source=" & RUTA_DATABASE cnConnect.Open Set rstTitles = New ADODB.Recordset With rstTitles .CursorLocation = adUseClient .CursorType = adOpenStatic .LockType = adLockBatchOptimistic .ActiveConnection = cnConnect .Open SentenciaSQL .ActiveConnection = Nothing End With With DataGrid1 .AllowAddNew = False .AllowUpdate = False .AllowDelete = False Set .DataSource = rstTitles End With Set cnConnect = Nothing If Not booEnlazados Then CargarEnlazarControles End Sub Private Sub CargarEnlazarControles() Dim intNumCampos As Integer Dim intNumControlesCargados As Integer Dim i As Integer 'la siguiente línea se usa para pasar por alto los errores 'en este caso los errores de carga On Error Resume Next intNumCampos = rstTitles.Fields.Count intNumControlesCargados = txtFieldName.UBound + 1 For i = 0 To intNumCampos - 1 If i > 0 Then Load lblFieldName(i) Load txtFieldName(i) End If lblFieldName(i).Caption = rstTitles.Fields(i).Name lblFieldName(i).Move lblFieldName(i).Left, lblFieldName(0).Top + i * (txtFieldName(i).Height + 90) lblFieldName(i).Visible = True txtFieldName(i).DataField = rstTitles.Fields(i).Name txtFieldName(i).Move txtFieldName(i).Left, txtFieldName(0).Top + i * (txtFieldName(i).Height + 90) txtFieldName(i).Visible = True Set txtFieldName(i).DataSource = rstTitles intNumControlesCargados = txtFieldName.UBound + 1 Next End Sub