| 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?????
|
| |
|
|
|