Retroceder   Foros del Web > Temas generales de computación > Programación > Visual Basic

Respuesta
 
Herramientas Desplegado
Antiguo 19-feb-2006, 12:14   #1 (permalink)
netgame ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2006
Mensajes: 8
Ayuda con datagrid

necesito cargar en una grilla los datos que tengo en una tabla, para conectarme utilizo la siguiente conexion.

Dim cnn As New ADODB.Connection
Dim rec As New ADODB.Recordset
cnn.Open "Provider=SQLOLEDB;" & _
"Data Source=(local);" & _
"Initial Catalog=mermas;", "sa", ""
rec.Open "select * from PRODUCTOS", cnn, _
adOpenKeyset, adLockOptimistic

alguien podria echarme una manito.
netgame está desconectado   Responder Citando
Antiguo 19-feb-2006, 21:05   #2 (permalink)
jc_moty ha deshabilitado el karma
 
Avatar de jc_moty
 
Fecha de Ingreso: septiembre-2005
Ubicación: Usulután, El Salvador
Mensajes: 466
Enviar un mensaje por MSN a jc_moty Enviar un mensaje por Yahoo  a jc_moty
Bueno, segun mi experiencia, no podes conectar una DataGrid a un objeto connection o recordset, sino que la DataGrid la conectas a un Adodc (ADO Data Control), y en las propiedades de este objeto estableces la cadena de conexion y el RecordSource, y la DataGrid la conectas al Adodc mediante la propiedad DataSource, algo asi:
Código:
Adodc1.ConnectionString = "Provider=SQLOLEDB;" & "Data Source=(local);" & "Initial Catalog=mermas;", "sa", ""
Adodc1.RecordSource = "SELECT * FROM productos"
Set DataGrid1.DataSource = Adodc1
Espero te sirva
Saludos
jc_moty está desconectado   Responder Citando
Antiguo 20-feb-2006, 04:45   #3 (permalink)
netgame ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2006
Mensajes: 8
Yo se que se puede hacer con un Recordset desconectado, encontre este ejemplo realizado con una base de datos en access, pero mi problema es que no puedo realizar el mismo procedimiento con una bd en sql server.

dejo el codigo de ejemplo
Código:
Option Explicit

' Declaración de variables objeto a nivel del formulario
Private mCnn As ADODB.Connection
Private mRst As ADODB.Recordset

Private Sub Command1_Click()
    ' Conectamos el Recordset para proceder a la
    ' actualización
    Set mRst.ActiveConnection = mCnn

    ' Actualizamos el conjunto de datos
    mRst.UpdateBatch

    ' Desconectamos de nuevo el objeto Recordset
    Set mRst.ActiveConnection = Nothing

End Sub

Private Sub Command2_Click()
    If MsgBox("¿Desea eliminar la tabla temporal?", _
        vbInformation + vbYesNo) = vbYes Then
        '
        ' Eliminamos la tabla ...
        mCnn.Execute "DROP TABLE Tabla1"

        ' Descargamos el formulario
        Unload Me
    End If

End Sub

Private Sub Form_Load()

    On Error GoTo ErrFormLoad

    ' Configuramos los distintos controles del formulario
    Command1.Caption = "Actualizar"
    Command2.Caption = "Eliminar tabla temporal"

    With DataGrid1
        .AllowAddNew = True
        .AllowDelete = True
    End With

    ' Creamos un nuevo objeto Connection
    Set mCnn = New ADODB.Connection

    ' Abrimos la conexión
    With mCnn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source = C:\Mis documentos\Neptuno.mdb"
        .Open
    End With

    ' Creamos la tabla de prueba, copiando la estructura
    ' de la tabla Clientes
    mCnn.Execute "SELECT * INTO Tabla1 FROM Clientes WHERE 1=0"

    ' Creamos un nuevo objeto Recordset
    Set mRst = New ADODB.Recordset

    ' Configuramos y abrimos el Recordset
    With mRst
        .CursorLocation = adUseClient
        .CursorType = adOpenStatic
        .LockType = adLockBatchOptimistic
        .Open "Tabla1", mCnn, , , adCmdTable
    End With

    ' Enlazamos el control DataGrid con el objeto Recordset
    Set DataGrid1.DataSource = mRst

    ' Desconectamos el objeto Recordset
    Set mRst.ActiveConnection = Nothing

    Exit Sub

ErrFormLoad:
    If Err.Number = -2147217900 Then
        If MsgBox("La tabla ya existe. ¿Desea eliminarla?", _
            vbInformation + vbYesNo) = vbYes Then
            '
            ' Eliminamos la tabla ...
            mCnn.Execute "DROP TABLE Tabla1"
            ' ... y la volvemos a crear
            Resume
        End If
    End If

    Resume Next
End Sub

Private Sub Form_Unload(Cancel As Integer)

    mRst.Close
    mCnn.Close
    Set mRst = Nothing
    Set mCnn = Nothing

End Sub
netgame está desconectado   Responder Citando
Antiguo 20-feb-2006, 07:32   #4 (permalink)
jrp01 está en el buen camino
 
Avatar de jrp01
 
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.704
Enviar un mensaje por MSN a jrp01
en que parte asignas el recordset al datagrid?
Set DataGrid1.DataSource = rec
jrp01 está desconectado   Responder Citando
Antiguo 22-feb-2006, 05:42   #5 (permalink)
netgame ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2006
Mensajes: 8
Cita:
Iniciado por jrp01
en que parte asignas el recordset al datagrid?
Set DataGrid1.DataSource = rec

sip, lo asigno tal cual tu dices, pero me arroja un error al momento de hacerlo
netgame está desconectado   Responder Citando
Antiguo 22-feb-2006, 07:29   #6 (permalink)
jrp01 está en el buen camino
 
Avatar de jrp01
 
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.704
Enviar un mensaje por MSN a jrp01
En que parte del programa te marca el error? al asigar el recordset al datagrid?
jrp01 está desconectado   Responder Citando
Antiguo 22-feb-2006, 11:13   #7 (permalink)
netgame ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2006
Mensajes: 8
Cita:
Iniciado por jrp01
En que parte del programa te marca el error? al asigar el recordset al datagrid?
Asi es, al momento de asignarlo al datagrid, ademas me muestra un mensaje en que dice que el rowset no es bookmarkable
netgame está desconectado   Responder Citando
Antiguo 22-feb-2006, 11:34   #8 (permalink)
jrp01 está en el buen camino
 
Avatar de jrp01
 
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.704
Enviar un mensaje por MSN a jrp01
A ver intenta cambiar las proiedades del record set con estas:
Código:
rec.CursorType = adOpenStatic
rec.LockType = adLockBatchOptimistic
En lugar de las que tienes
jrp01 está desconectado   Responder Citando
Antiguo 22-feb-2006, 11:39   #9 (permalink)
netgame ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2006
Mensajes: 8
pego el codigo para ver mejor lo que estoy haciendo
Código:
Option Explicit

Private cnn As ADODB.Connection
Private rst As ADODB.Recordset

Private Sub cmdAbrir_Click()
Dim tField As ADODB.Field
'
' Por si ya estaba abierta...
Set cnn = Nothing
Set rst = Nothing
'
' Crear los objetos
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
'
' abrir la base usando las credenciales de Windows

 cnn.Open "Provider=SQLOLEDB;" & _
             "Data Source=(local);" & _
       "Initial Catalog=mermas;", "sa", ""
           
           
'
' abrir el recordset indicando la tabla a la que queremos acceder
rst.Open "SELECT id_prod FROM PRODUCTOS", cnn, adOpenDynamic, adLockOptimistic
'
' Asignar los nombres de los campos al data
Set DataGrid1.DataSource = rst
'
' Cerrar el recordset y la conexión
rst.Close
cnn.Close
'
End Sub
netgame está desconectado   Responder Citando
Antiguo 22-feb-2006, 11:42   #10 (permalink)
jrp01 está en el buen camino
 
Avatar de jrp01
 
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.704
Enviar un mensaje por MSN a jrp01
Cambia esto
Código:
rst.Open "SELECT id_prod FROM PRODUCTOS", cnn, adOpenDynamic, adLockOptimistic
Por esto:
Código:
rst.Open "SELECT id_prod FROM PRODUCTOS", cnn, adOpenStatic, adLockBatchOptimistic
jrp01 está desconectado   Responder Citando
Antiguo 22-feb-2006, 12:29   #11 (permalink)
netgame ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2006
Mensajes: 8
encontre una solucion a mi problema, y fue cargar en el form_load lo sgte
la duda que tengo, es como hago para que la grilla se actualize despues que guarde los nuevos registros.

gracias por orientarme, me sirvio para ver donde estaba mi error

[code]
Option Explicit

' ----------------------------------------------------------
' Declaro el objeto MiConexion como una variable de módulo.
' Cuando se instancie será la conexión con la base de datos.
' ----------------------------------------------------------
Dim MiConexión As ADODB.Connection

' ----------------------------------------------------------
' Al cargarse el Formulario hago el trabajo.
' (Aquí, a lo sumo, solo debería establecerse la conexión con la base de datos,
' y las demás cosas se deberían hacer en otro lado,
' pero este es solo un ejemplo sencillo)
' ----------------------------------------------------------
Private Sub Form_Load()
' ----------------------------------------------------------
' Instancio la conexión y me conecto con la base de datos
' ----------------------------------------------------------
Set MiConexión = New ADODB.Connection

With MiConexión
' Cursor en Cliente para poder usar un DataGrid
.CursorLocation = adUseClient
' Abro la conexión con la base de datos usando un DSN
.Open "Provider=SQLOLEDB;" & _
"Data Source=(local);" & _
"Initial Catalog=mermas;", "sa", ""

End With
' ----------------------------------------------------------
' Especifico qué información quiero de la base de datos
' ----------------------------------------------------------
Dim SQL As String

SQL = "SELECT id_prod, nom_prod" & vbCrLf & _
"From PRODUCTOS" & vbCrLf
' ----------------------------------------------------------
' Cargo el recordset con la información proveniente de la base de datos
' ----------------------------------------------------------
Dim rs As ADODB.Recordset

Set rs = MiConexión.Execute(SQL)
' ----------------------------------------------------------
' Muestro la información en el DataGrid
' ----------------------------------------------------------
Set DataGrid1.DataSource = rs
End Sub


[code/]
netgame está desconectado   Responder Citando
Antiguo 23-feb-2006, 10:19   #12 (permalink)
Roy666 ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2006
Mensajes: 1
De acuerdo Enlazar A Datagrid

Cita:
Iniciado por netgame
necesito cargar en una grilla los datos que tengo en una tabla, para conectarme utilizo la siguiente conexion.

Dim cnn As New ADODB.Connection
Dim rec As New ADODB.Recordset
cnn.Open "Provider=SQLOLEDB;" & _
"Data Source=(local);" & _
"Initial Catalog=mermas;", "sa", ""
rec.Open "select * from PRODUCTOS", cnn, _
adOpenKeyset, adLockOptimistic

alguien podria echarme una manito.
OJALA TE SIRVA ESTE CODIGO...

Dim cnn as New ADODB.Connection
Dim rs as New ADODB.Recordset

Private Sub Form_Load()
' Linea de connexión a la BD

strSQL ="Select *from Productos"
rs.cursorLocation=AdUseClient
rs.Open strSQL,cnn, AdOpenStatic, AdLockReadOnly
set Datagrid1.Datasource=rs
End Sub

Ejecuta el Form
Suerte...
Roy666 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 04:27.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93