• Viernes 3 de Mayo de 2024, 07:48

Autor Tema:  Fila Seleccionada De Datagrid  (Leído 3393 veces)

Black_angel

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Fila Seleccionada De Datagrid
« en: Jueves 22 de Julio de 2004, 18:06 »
0
Hola a todos de nuevo,

  Estoy construyendo un formulario el cuál quiero que muestre datos en un DataGrid.  Para ello he incluido un objeto OleDBDataAdapter "OleDBDataAdapter1", un objeto OleDbConnection "OleDbConnection1", un DataSet "DataSet1" y el DataGrid "DataGrid1".
He realizado la conexión de todos estos objetos según indica el libro de Eidos mediante el IDE poniendo como consulta SQL: SELECT * FROM PERSONA.  (La tabla persona contine los campos Clave, Nombre, Edad, Altura)

Hasta aquí todo correcto, doy a depurar y se muestran en el DataGrid todos los campos de la tabla PERSONA con sus correspondientes datos.
Ahora lo que quiero hacer es añadir un botón el cuál al ser pinchado coja el valor contenido en el campo "Clave" de la FILA SELECCIONADA por el usuario.
¿Cómo hago esto? ¿Qué propiedad de estos objetos creados me devuelve el valor de un campo "Clave" de la fila seleccionada?

Y otra pregunta, si en tiempo de ejecución quiero cambiar la consulta SQL por ejemplo poniendo una condición más: SELECT * FROM PERSONA WHERE Edad=20 sería el objeto OleDbDataAdapter el que tendría que utilizar? ¿de qué forma?

Gracias de antemano por las respuestas. Un saludo :hola:

sergiotarrillo

  • Moderador
  • ******
  • Mensajes: 1059
    • Ver Perfil
    • http://sergiot2.com/blog
Re: Fila Seleccionada De Datagrid
« Respuesta #1 en: Viernes 23 de Julio de 2004, 04:08 »
0
Lo primero no lo recuerdo pero hay una funcion que permite recuperar la fila selecionada, no lo recuerdo ahorita lo segundo lo harias asi:

Creas un sqlCommand:
Código: Text
  1.  
  2. dim myCommnad as New OleDBCommand("SELECT * FROM PERSONA WHERE Edad=20")
  3. tuAdapter.Command = myCommand
  4.  
  5. 'llenando el dataset
  6. tuAdapter.Fill(tuDataSet,"nPersona")
  7.  
  8. 'ahora lo enlazas a la Grilla
  9. tuGrid.setDataBinding(tuDataSet,"nPersona")
  10.  
  11.  

Esa es la idea si no te corre me pasas la voz para hacerlo en mi maquina.....


Sergio Tarrillo
Blog]miBlog[/url]

No me visiten!

Black_angel

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Fila Seleccionada De Datagrid
« Respuesta #2 en: Viernes 23 de Julio de 2004, 14:47 »
0
Hola Seghio,
 
  gracias por contestar, he probado tu código pero no consigo hacer que funcione. Aquí pongo lo que tengo puesto a ver si es que tengo yo algo mal:

    Dim myCommand As New System.Data.OleDb.OleDbCommand("SELECT * FROM Persona WHERE Edad=20")
        myCommand.Connection = Me.OleDbConnection1   /*Esto lo he tenido que poner porque sino me daba error en la siguiente linea diciéndome que no estaba establecida la conexión*/
        Me.OleDbDataAdapter1.SelectCommand = myCommand

        'llenando el dataset
        Me.OleDbDataAdapter1.Fill(Me.DataSet11, "Atleta")

        'ahora lo enlazas a la Grilla
        Me.DataGrid1.SetDataBinding(Me.DataSet11, "Atleta")
        Me.DataGrid1.Refresh()  /*Esto lo he puesto por si acaso, pero ni con él ni sin él me va*/



Ya he encontrado la función que devuelve la fila seleccionada, es la función CurrentRowIndex():

          MessageBox.Show(Me.DataGrid1.CurrentRowIndex())   te muestra el índice de la fila seleccionada.



Gracias de nuevo :hola:

Black_angel

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Fila Seleccionada De Datagrid
« Respuesta #3 en: Viernes 23 de Julio de 2004, 16:15 »
0
Otra pregunta más,

   ¿Cómo podría hacer que el SELECT de la consulta SQL me devuelva como máximo un número "X" de tuplas? (por si la BD es muy grande que no esté mucho tiempo)

Gracias de nuevo de antemano por las respuestas :)

Black_angel

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Fila Seleccionada De Datagrid
« Respuesta #4 en: Sábado 24 de Julio de 2004, 15:25 »
0
Ya he resuelto el problema del Datagrid en tiempo de ejecución, el código lo he sacado del libro Eidos de Visual Basic .NET que además modifica el tamaño de las columnas, pone colores,...

        ' Crear conexión
        Dim oConexion As System.Data.OleDb.OleDbConnection
        oConexion = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & System.IO.Directory.GetCurrentDirectory & "\persona.mdb")
        ' crear adaptador
        Dim oDataAdapter As System.Data.OleDb.OleDbDataAdapter
        oDataAdapter = New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM Persona WHERE Edad=20", oConexion)
        ' crear commandbuilder
        Dim oCB As System.Data.OleDb.OleDbCommandBuilder = New System.Data.OleDb.OleDbCommandBuilder(oDataAdapter)
        ' crear dataset
        'Dim odataSet As WindowsApplication2.DataSet1()
        'odataSet = New WindowsApplication2.DataSet1
        oDataAdapter.Fill(DataSet11, "Persona")
        ' asignar dataset al datagrid
        Me.DataGrid1.DataSource = DataSet11
        Me.DataGrid1.DataMember = "Persona"
        ' configurar grid por código
        Me.DataGrid1.Anchor = (AnchorStyles.Bottom + AnchorStyles.Left + AnchorStyles.Right + AnchorStyles.Top)
        Me.DataGrid1.CaptionText = "Datos de personas"
        Me.DataGrid1.CaptionBackColor = Color.Turquoise
        Me.DataGrid1.CaptionForeColor = Color.Black
        ' crear un objeto para estilos del datagrid
        Dim oEstiloGrid As New DataGridTableStyle
        oEstiloGrid.MappingName = "Persona"
        oEstiloGrid.BackColor = Color.LightGoldenrodYellow
        oEstiloGrid.AlternatingBackColor = Color.Aquamarine
        ' crear objetos de columna-grid para cada
        ' columna de la tabla a mostrar en el datagrid
        Dim oColGrid As DataGridTextBoxColumn
        ' configurar cada objeto de columna-grid
        oColGrid = New DataGridTextBoxColumn
        oColGrid.TextBox.Enabled = False
        oColGrid.Alignment = HorizontalAlignment.Center
        oColGrid.HeaderText = "Edad de la persona"
        ' nombre de la columna del dataset que
        ' se mapea hacia esta columna del grid
        oColGrid.MappingName = "Edad"
        oColGrid.Width = 50
        oColGrid.Alignment = oColGrid.Alignment.Left
 
        ' añadir la columna al objeto que contiene
        ' los estilos del datagrid, en concreto,
        ' a la colección de estilos de columna
        ' aquí solo pongo uno de ejemplo
        oEstiloGrid.GridColumnStyles.Add(oColGrid)
        oColGrid = Nothing
   
        ' una vez creadas todas las columnas de
        ' estilos para el grid, añadir el objeto
        ' que contiene el estilo personalizado
        ' a la colección de estilos de tablas
        ' del datagrid
        Me.DataGrid1.TableStyles.Add(oEstiloGrid)







Ahora tan solo me falta saber lo de que la sentencia SELECT te devuelva como máximo X tuplas.
Si alguien lo sabe le estaría muy agradecido si lo dijera.

Un saludo y gracias de nuevo :hola: