• Viernes 8 de Noviembre de 2024, 20:11

Autor Tema:  Re: Rellenar un datagrid con los resultados de una consulta  (Leído 4664 veces)

mluqero

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Rellenar un datagrid con los resultados de una consulta
« en: Lunes 2 de Junio de 2003, 18:22 »
0
Hola a todos. Tengo un pequeño gran problema. A lo mejor os parece una bobada pero no se como hacerlo.
Tengo una consulta que me devuelve varios registros. Necesito meter esos registros en un datagrid (u otra estructura de este tipo) para mostarlos al usuario y no se como hacerlo.
Gracias de antemano.
:sorcerer:

angelescj

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Rellenar un datagrid con los resultados de una consulta
« Respuesta #1 en: Lunes 2 de Junio de 2003, 18:33 »
0
Para cargar un datagrid se debe asignar valor a la propiedad datasource:
Set datagrid1.datasource=adodc1
donde Adodc1 es el control de datos.
Si quieres lo puedes conectar a un command de un Dataenvironment,y sería:
Set datagrid1.datasource=dteDatos.command("elquesea").execute
:suerte:

mluqero

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Rellenar un datagrid con los resultados de una consulta
« Respuesta #2 en: Martes 3 de Junio de 2003, 14:33 »
0
Si, tienes  razon pero es que en el caso que me comentas se me cargan todos los registros y yo solo quiero que a medida que voy recorriendo un recordset, los registros que cumplen la condicion de la busqueda, se me inserten el datagrid
Lo que quiero hacer es sacar dentro de un datagrid, todos los registros comprendidos entre 2 fechas dadas por el usuario.
Gracias de antemano.:ayuda:

ccortes

  • Miembro activo
  • **
  • Mensajes: 91
    • Ver Perfil
Re: Rellenar un datagrid con los resultados de una consulta
« Respuesta #3 en: Martes 3 de Junio de 2003, 15:25 »
0
Puedes probar digitando en un textbox el dato a consultar y con un command, aunque si lo deseas evitas el command y agregas el codigo al evento keypressed del texbox, el codigo seria mas o menos asi:

Private Sub CmdBuscar_Click()
'Declaro las variables
Dim moRecordset As New ADODB.Recordset
Dim msSql As String
Dim mbEncontro As Boolean
' Creo el SQL

mbEncontro = False

If Trim(Txtcedula) <> "" Then
   
    mbEncontro = True
    msSql = " Select *"
    msSql = msSql + " from tabla"
    msSql = msSql + " Where campo = '" + Trim(Txtcedula) + "'"

End If

'Ejecuto la sentencia en SQL
If Trim(msSql) = "" Then Exit Sub
If mbEncontro = False Then Exit Sub

moRecordset.Open msSql, goDatabase, adOpenStatic, adLockOptimistic

'limpio el grid para que no entre basura
MSFlexGrid.Clear
MSFlexGrid.Rows = 1


'Indico el ancho del grid
MSFlexGrid.ColWidth(0) = 1000
MSFlexGrid.ColAlignment(0) = 1
MSFlexGrid.ColWidth(1) = 1350

    With MSFlexGrid
        'Titulo de la columna personalizado
        .Row = 0
        .Col = 0
        .Text = "Nombre 1"
        .CellFontBold = True
       
        .Row = 0
        .Col = 1
        .Text = "Nombre 2"
        .CellFontBold = True
'Asi hasta obtener el total de columnas del flexgrid                
 End With

If Not moRecordset.EOF And Not moRecordset.BOF Then

Do While Not moRecordset.EOF

MSFlexGrid.AddItem moRecordset.Fields(1).Value + Chr$(9) + moRecordset.Fields(2).Value
Txtcedula.Text = Trim(moRecordset.Fields(0).Value)
    moRecordset.MoveNext
       
   Loop
   
    moRecordset.Close
Else
   MsgBox "Datos que Busca no existen  !!!", vbCritical, "Atención"
    Txtcedula.SetFocus
   
    End If
Exit Sub

Txtcedula.SetFocus

End Sub
Carlos Cortés C

angelescj

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Rellenar un datagrid con los resultados de una consulta
« Respuesta #4 en: Martes 3 de Junio de 2003, 15:44 »
0
Haz la consulta teniendo en cuenta la codición:
dteDatos.Commmands("elquesea").CommandText= "Select * from Tabla Where condicion"
Set Datagrid1.Datasource=dteDatos.Commands("elquesea").execute
Para pasarle una cláusula SQL a un command debes decirle en las propiedades del Command que el origen de datos es una consulta SQL.

:suerte:

mluqero

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Rellenar un datagrid con los resultados de una consulta
« Respuesta #5 en: Martes 3 de Junio de 2003, 18:37 »
0
Muchas gracias por contestarme tan pronto pero, angelescj, tengo una pregunta
Que componente se supone que es dteDatos?

Gracias por todo:ayuda:

angelescj

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Rellenar un datagrid con los resultados de una consulta
« Respuesta #6 en: Martes 3 de Junio de 2003, 18:56 »
0
Perdona es que hice "corta y pega" de un código mío y no me di cuenta. El elemento dteDatos es de tipo DataEnvironment.
Te envío dos ejemplos, la carpeta "Datagrid1" enlaza por código el datagrid a un control Adodc, y "datagrid2" lo hace a través de un Dataenvironment.
Los dos son válidos, pero es mejor y más recomendable el del Dataenvironment.
Si tienes alguna duda avisa.
La base de datos está en el directorio por defecto, así que abre los proyectos haciendo doble click en el *.vbp

:suerte:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

mluqero

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Rellenar un datagrid con los resultados de una consulta
« Respuesta #7 en: Miércoles 4 de Junio de 2003, 18:28 »
0
Sigo sin conseguirlo. El codigo que tengo puesto es el siguiente:
MICAD = "SELECT * FROM ENTRADAS WHERE REGISTRO = " '& Me.txtRegistro.Text
'ENTRADAS es la tabla de la BD que quiero consultar

RSAux.RecordSource = MICAD
RSAux.Refresh
Set dtgResultados.DataSource = RSAux
dtgResultados.Refresh

Me da un error en la clausula FROM

Necesito ayuda!!!!!:ayuda:

angelescj

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Rellenar un datagrid con los resultados de una consulta
« Respuesta #8 en: Jueves 5 de Junio de 2003, 08:37 »
0
Si "registro" no es numérico en la BD la cláusula sería:
MICAD = "SELECT * FROM ENTRADAS WHERE REGISTRO='" & Me.txtRegistro.Text & "'"
(Entre comillas simples y sin ningún espacio enblanco en el "=" del where).
Si es numérico:

MICAD = "SELECT * FROM ENTRADAS WHERE REGISTRO=" & Me.txtRegistro.Text
(Sin comillas simples y sin ningún espacio enblanco en el "=" del where.
Si es numérico:
Espero que te sirva.
Por cierto el refresh del datagrid no es necesario.
:suerte:

mluqero

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Rellenar un datagrid con los resultados de una consulta
« Respuesta #9 en: Jueves 5 de Junio de 2003, 17:50 »
0
Me sigue dando el error de sintaxis en la clausula FROM. El codigo exacto del bloque donde se incluye es el siguiente. Os lo pongo para ver si veis algo raro.
If Me.txtRegistro.Text = BUSCAR Then
   BUSCADO = Adodc1.Recordset.Bookmark
   Text4.Text = Adodc1.Recordset.Bookmark
   RSAux.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Mis documentosControl de cartasEntrada2003EntradaCOEBA2003.mdb;Persist Security Info=False"
   MICAD = "SELECT * FROM ENTRADAS WHERE REGISTRO='" & Me.txtRegistro.Text & "'"
   RSAux.RecordSource = MICAD
   Set dtgResultados.DataSource = RSAux
End If

En la BD el campo REGISTRO no es numerico, es texto. ENTRADAS es la unica tabla que tiene la BD.

angelescj

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Rellenar un datagrid con los resultados de una consulta
« Respuesta #10 en: Viernes 6 de Junio de 2003, 09:06 »
0
Por lo que dices el error es "ERROR DE SINTAXIS EN LA CLÁUSULA FROM" , y teniendo en cuenta que ésta es correcta lo único que se me ocurre es que en las propiedades del Adodc tengas puesto como "Tipo de comando", CommandType, el valor adCmdTable o adCmdStoredProc (aunque creo que será adCmdTable) , en cuyo caso no te deja usar SQL. Para porder usar SQL debes poner cuanquier otro valor, se recomienda adCmdText o adCmdUnknown, éste último te permite haver MoveNext..
Si no es eso avisa, que te envío un ejemplo para que compruebes dónde está el error.


:suerte:

mluqero

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Rellenar un datagrid con los resultados de una consulta
« Respuesta #11 en: Viernes 6 de Junio de 2003, 09:46 »
0
Ya funciona!!!!! Era eso angelescj. Muchisimas gracias.
:jumpie::jumpie::jumpie::jumpie::jumpie::gracias: