El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Foro de Visual Basic/VB.NET
Foros del Guru > Visual Basic/VB.NET
Usuario Consulta sql en un grid
Desconocido
Enviado - 29/7/2004
 
Hola,

Alguien puede decirme como puedo asignar una consulta SQL sin utilizar un data y colocar el resultado en una cuadricula ya sea dbgrid o datagrid y con una base de datos de access

De antemano gracias
 
Desconocido
Enviado - 29/7/2004
 
depende de si trabajas con DAO o ADO. Bueno en ambos casos (excluyentes) debes declarar una variable tipo recordset, por ejemplo

dim rec as recordset

y asignar a ese recordset la consulta por ejemplo (asumo que tienes abierta la base de datos en la variable db y que trabajas con ADO, sino, agrega un control ADO o DAO y has la conexion con el, y te dara la cadena de conexion y luego agregas esa linea de la siguiente forma despues de las declaraciones de variables


Set db = New ADODB.Connection
db.ConnectionString = STR_CONNECTION
db.Open

donde STR_CONNECTION es la cadena que obtuviste antes, es de tipo String
):

dim db as ADODB.Database
dim rec as ADODB.recordset
dim sql as string


sql = "select * from empleados"

set rec = db.openrecordset(sql)

de esta forma la consulta esta guardada en rec y luego te queda llenar el MSFlexGrid:

while not rec.eof
msflexgrid1.textmatrix(fila,columna) = rec("campo1")
msflexgrid1.textmatrix(fila,columna+1) = rec("campo2")
msflexgrid1.textmatrix(fila,columna+2) = rec("campo3")

rec.movenext
wend

donde columna y fila son variables tipo integer (o long o double dependiendo de cuantas filas o columnas tengas), y se inician desde 0 (en caso de no tener encabezado).
 
Desconocido
Enviado - 30/7/2004
 
Si se pudo insertar la consula sql en el flexgrid, no utilice ningun objeto Data o Ado

Private db As Database
Private rs As Recordset
Const sPathBase As String = "D:\PracticaVBasic\credcon.mdb"
Set db = OpenDatabase(sPathBase)

Dim fila, columna As Integer
fila = 1
columna = 1


Set rs = db.OpenRecordset("SELECT * FROM Clientes", dbOpenDynaset)


While Not rs.EOF
MSFlexGrid1.TextMatrix(fila, columna) = rs("clave")
MSFlexGrid1.TextMatrix(fila, columna + 1) = rs("empresa")
rs.MoveNext
fila = fila + 1
Wend

Comentarios:
Se podra hacer esto con el datagrid o flexgrid, por que al asignarle el datasource al dbgrid manda error
 
Desconocido
Enviado - 1/8/2004
 
Esto es bastante facil.
Primero para establecer una consulta sql:
'*************************************
Dim DB As New Connection
Dim RS As New Recordset
Dim Direccion as String
Dim Sql as String

Direccion = App.path & "\MiBd.mdb"
SQL = "SELECT * FROM [Clientes]"

DB.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=" & Direccion & ";"

RS.Open SQL, DB, adOpenKeyset, adLockOptimistic
'*************************************
'Ahora para cargar en un MSFlexGrid:
'*************************************
MSFlexGrid1.Cols = RS.Fields.Count + 1
MSFlexGrid1.Rows = RS.RecordCount + 1
MSFlexGrid1.Row = 0
A = 0
While Not A = RS.Fields.Count
MSFlexGrid1.Col = A + 1
MSFlexGrid1.Text = RS.Fields(A).Name
A = A + 1
Wend

'Colocamos la cantidad de columnas y filas
Counta = 0
While Not RS.EOF
MSFlexGrid1.Row = Counta + 1
B = 0
While Not B = RS.Fields.Count
MSFlexGrid1.Col = B + 1
If Not IsNull(RS.Fields(B)) Then
MSFlexGrid1.Text = RS.Fields(B)
End If
B = B + 1
Wend
RS.MoveNext
Counta = Counta + 1
Wend
'*************************************
'Y Para el DataGrid se hace bastante facil
'*************************************
Set DataGrid.Datasource = RS
 
Desconocido
Enviado - 21/9/2004
 
lo probe y si funciona con el msflexgrid pero con el datagrid no!

No genera errores, el problema es que no muestra nada.
Que sucede?????

 
 

 

Contactos myStudio Network