ayuda urgente como mostrar una consulta de sql en un msflexgrid

ramon2341
16 de Abril del 2004
ayuda urgente como mostrar una consulta de sql en un msflexgrid como se hace

krizall
16 de Abril del 2004
hola. creo que puedes hacerlo asi
si es creado con condigo
set msflexgrid.datasource=rs
si usas control pues solo enlazas la propiedad data source al al control

solidsnake©
16 de Abril del 2004
ok este funciona para un flex
colaca un text donde vas a poner el dato a fiultrar y un msf


Private Sub txt_Ord_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If txt_Ord = "" Then 'valida que exista un dato en el cuadro a consultar
MsgBox "favor Ingrese el Numero de la Orden a consultar", vbInformation
Else
consultaord
End If
End If
End Sub


Private Sub consultaord()

Dim Cadena As String
Dim rsord As New ADODB.Recordset
Dim i, j, k, l As Integer
Dim campo As Variant

Cadena = "Select * from Orders"
Cadena = Cadena & " where OrderID = " & txt_Ord
rsord.Open Cadena, conexion
msf_ord.Cols = rsord.Fields.Count '+ 1
l = 0
j = 0
While j < Val(msf_ord.Cols)
msf_ord.TextMatrix(0, j) = rsord.Fields(j).Name ' "Campo" & j 'da el nombre del select
j = j + 1
Wend

i = 1
k = 0
While Not rsord.EOF
i = i + 1
msf_ord.Rows = i
While k < j

'para evitar el error 94 se coloca un vacio junto al campo si es nulo se convierte en
'espacio en blanco
msf_ord.TextMatrix(i - 1, k) = "" & rsord(k)

k = k + 1
Wend
rsord.MoveNext 'aumenta el contador
Wend


End Sub



********************************************

Saludos

jesus4736
16 de Abril del 2004
Aqui tienes Raimon te paso el código de mi Módulo que sólo es copiar y pegar si no lo pillas bien pon el mail y te lo mando, sólo le tienes que pasar el nombre del flexgrid y el nombre del recordset que contiene los datos, por ejemplo:

"Call LlenarFlexGrid(mdiConsultas.grdConsultas, rstConsulta)"
Donde "LlenarFlexGrid" es la función,
"mdiConsultas" es el formulario donde esta el FlexGrid,
"grdConsultas" es el Flexgrid = "mdiConsultas.grdConsultas"
"rstConsulta" es el recordset con los datos.
Código:

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' LlenarFlexGrid()
'
' Rutina que rellena el control MSFlexGrid pasado como primer parámetro con
' los datos del Recordset pasado como segundo parámetro.
'
' TEMAS RELACIONADOS: Controles: MSFlexGrid, Recordset
'
Public Sub LlenarFlexGrid(grdHoja As MSFlexGrid, rstDatos As Recordset)
Dim intFila As Integer, intColumna As Integer
Dim intAnchoCabecera As Integer, intAnchoDato As Integer
Dim rstCopia As Recordset
' Utilizaremos una copia del Recordset pasado para no modificar ninguna
' de sus propiedades
Set rstCopia = rstDatos.Clone
With grdHoja
' La hoja se borra por completo (por si contenía algo)
grdHoja.Rows = 1
' El nº de columnas de la hojas es el mismo que el de campos del
' Recordset
.Cols = rstCopia.Fields.Count

' La cabecera de la hoja (.Row=0) contiene el nombre de los campos
' Con la propiedad .Row selecciono la fila activa y con .Col selecciono
' la columna activa. La propiedad .ColWidth(i) permite especificar el
' ancho que ocupará la columna i. El tamaño se ajustará en función del
' tipo y tamaño del dato
.Row = 0
For intColumna = 0 To rstCopia.Fields.Count - 1

' Seleccionamos cada columna y la asociamos al campo
' correspondiente
.Col = intColumna

' La cabecera de la columna será el nombre del campo
.Text = rstCopia.Fields(intColumna).Name
' En <intAnchoCabecera> guardamos un cálculo del espacio que
' necesita la etiqueta de cabecera para poder verse sin problemas
intAnchoCabecera = Len(.Text) * 100

' En <intAnchoDato> guardamos un cálculo del espacio que necesita
' el dato de la columna para visualizarse sin problemas
intAnchoDato = rstCopia.Fields(intColumna).Size * 100
' El ancho de la columna será el máximo de los dos anchos
' calculados anteriormente
.ColWidth(intColumna) = MaximoNum(intAnchoCabecera, intAnchoDato)
Next intColumna
' Ahora se rellena la hoja con los registros del Recordset
intFila = 1
If Not rstCopia.BOF And Not rstCopia.EOF Then rstCopia.MoveFirst

' La fila 0 se reservó para la cabecera, el resto será para los
' registros
intFila = 1
' Recorremos el Recordset para ir metiendo en cada fila cada uno de los
' campos
While Not rstCopia.EOF
' Hay que incrementar el número máximo de filas de la hoja
.Rows = intFila + 1
.Row = intFila
For intColumna = 0 To .Cols - 1
.Col = intColumna
' Se mete el campo en la columna asociada de la fila actual
' Si contiene valor nulo se introduce ""
If IsNull(rstCopia.Fields(intColumna)) Then
.Text = ""
Else
.Text = rstCopia.Fields(intColumna)
End If
Next
rstCopia.MoveNext
intFila = intFila + 1
Wend
' Se cierra el recordset duplicado
rstCopia.Close
End With
End Sub

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' MaximoNum() -> <lngValorMaximo>
'
' Función que devuelve el mayor de los números hallados en la lista de
' parámetros que se pasa a la función (nº indefinido de parámetros)
'
' TEMAS RELACIONADOS: MinimoNum()
'
Public Function MaximoNum(ParamArray vntListaNum()) As Long
Dim i As Integer

MaximoNum = vntListaNum(LBound(vntListaNum))
For i = LBound(vntListaNum) + 1 To UBound(vntListaNum)
If MaximoNum < vntListaNum(i) Then MaximoNum = vntListaNum(i)
Next

End Function