Visual Basic - ayuda con MSHFlexGrid

Life is soft - evento anual de software empresarial
   
Vista:

ayuda con MSHFlexGrid

Publicado por Marboro (9 intervenciones) el 27/02/2009 01:26:00
Tengo dos bases relacionadas por un campo y una en cada MSHFlexgrid , e usado un textbox que al momento de ir escribiendo una palabra en un MSHflexgrid me muestra lo que estoy buscando pero me sigue apareciendo los otros registros y en el otro MSHFlexgrid no me lista los registros relacionados alguin que me pueda ayudar con esto se lo agradeceria muchisimo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda con MSHFlexGrid

Publicado por Juan (5 intervenciones) el 27/02/2009 02:32:28
Primero...son pocos datos que aportas, por ejemplo:
- Bases de que ? (Access, SQL...etc)
- Estas usando DAO, ADO?

Si lo que haces es poner en el evento Change del TextBox el codigo para que te busque en ambas bases los registros que coinciden, yo creo que deberías hacer lo siguiente....voy a ser general ya que no tengo datos como para ser más explicito:

Sub TextBox1_Change()

...Generas una Tabla para volcar sus datos en la Grilla1

...Generas una Tabla para volcar sus datos en la Grilla2

Limpias ambas grillas, y volcas los datos en cada una

End Sub

si me das un poco mas de detalle trato de ayudarte más.
Slds.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con MSHFlexGrid

Publicado por Marboro (9 intervenciones) el 27/02/2009 16:02:06
este el el codigo, quiero que cuando al ir digitando una letra me filtre los la letra esto es en Flex1 y en flex2 me liste todos los que tienes el mismo nemonico
te agradeceria mucho tu ayuda

Private Sub Form_Load()
' Abre la conexión
Call IniciarConexion
' carga el Recorset con todos los datos
rs.Open "select * from obras", cnn, adOpenStatic, adLockOptimistic
' llena el flexgrid
sr.Open "select * from nemonico", cnn, adOpenStatic, adLockOptimistic
Call CargarFlex1(Flex1)
Call CargarFlex2(Flex2)
End Sub

Sub CargarFlex1(Flex1 As MSHFlexGrid)
Set Flex1.DataSource = rs
With Flex1
.ColWidth(0) = 800
.ColWidth(1) = 17000
.ColAlignmentFixed(0) = 1
.ColAlignment(0) = 1
End With
End Sub

Sub CargarFlex2(Flex2 As MSHFlexGrid)
Set Flex2.DataSource = sr
With Flex2
.ColWidth(1) = 800
.ColWidth(2) = 800
.ColWidth(3) = 800
.ColWidth(4) = 800
.ColWidth(4) = 800
.ColWidth(6) = 800
.ColWidth(7) = 6000
.ColWidth(8) = 800
.ColAlignmentFixed(0) = 1
.ColAlignment(0) = 1
End With
End Sub

Public Sub IniciarConexion()
With cnn
.CursorLocation = adUseClient
.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
App.Path & "obras.mdb" & ";Persist Security Info=False"
End With

End Sub

Function Autocompletar_MSHFlexGrid(MSHFlexGrid As Object, TBox As TextBox, columna As Long)

Dim i, j As Integer
Dim pos_SelStart As Integer

Set ConnPublic = New ADODB.Connection
Set rsPublic = New ADODB.Recordset

If (KeyRetroceso Or Len(TBox.Text) = 0) Then
KeyRetroceso = False
Exit Function
End If

With MSHFlexGrid
'Recorremos todas las filas del MshFlexgrid
For i = 0 To .Rows - 1
'Busca en el flexgrid si hay coincidencia, en la fila y columna actual
If InStr(1, .TextMatrix(i, columna), TBox.Text, vbTextCompare) = 1 Then
pos_SelStart = TBox.SelStart
'Asignamos el valor de la celda actual al textbox
TBox.Text = .TextMatrix(i, columna)
'Indicamos el comienzo de la selección
TBox.SelStart = pos_SelStart
'seleccionamos la porción de texto en el Text
TBox.SelLength = Len(.TextMatrix(i, columna)) - pos_SelStart
'Establecemos con TopRow , la fila arriba de todo
.TopRow = i
End If
Next i
End With

End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con MSHFlexGrid

Publicado por Marboro (9 intervenciones) el 27/02/2009 16:05:05
a me falto esta

Option Explicit

Public KeyRetroceso As Boolean
Public Cadena As String 'string que contiene la cadena de conexion
Public iSql As String 'string que contiene la instruccioón SQL
Public Usuario As String 'identifica el nombre de usuario

Public Declare Sub InitCommonControls Lib "comctl32" ()

Public ConnPublic As ADODB.Connection 'cadena de conexión de accseso a datos ADO
Public rsPublic As ADODB.Recordset 'recordset de accseso a datos ADO

Public cnn As New ADODB.Connection
Public rs As New ADODB.Recordset
Public sr As New ADODB.Recordset
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda con MSHFlexGrid

Publicado por Marboro (9 intervenciones) el 27/02/2009 16:10:03
este el el codigo, quiero que cuando al ir digitando una letra me filtre los la letra esto es en Flex1 y en flex2 me liste todos los que tienes el mismo nemonico
te agradeceria mucho tu ayuda

Option Explicit

Public KeyRetroceso As Boolean
Public Cadena As String 'string que contiene la cadena de conexion
Public iSql As String 'string que contiene la instruccioón SQL
Public Usuario As String 'identifica el nombre de usuario

Public Declare Sub InitCommonControls Lib "comctl32" ()

Public ConnPublic As ADODB.Connection 'cadena de conexión de accseso a datos ADO
Public rsPublic As ADODB.Recordset 'recordset de accseso a datos ADO

Public cnn As New ADODB.Connection
Public rs As New ADODB.Recordset
Public sr As New ADODB.Recordset

Private Sub Form_Load()
' Abre la conexión
Call IniciarConexion
' carga el Recorset con todos los datos
rs.Open "select * from obras", cnn, adOpenStatic, adLockOptimistic
' llena el flexgrid
sr.Open "select * from nemonico", cnn, adOpenStatic, adLockOptimistic
Call CargarFlex1(Flex1)
Call CargarFlex2(Flex2)
End Sub

Sub CargarFlex1(Flex1 As MSHFlexGrid)
Set Flex1.DataSource = rs
With Flex1
.ColWidth(0) = 800
.ColWidth(1) = 17000
.ColAlignmentFixed(0) = 1
.ColAlignment(0) = 1
End With
End Sub

Sub CargarFlex2(Flex2 As MSHFlexGrid)
Set Flex2.DataSource = sr
With Flex2
.ColWidth(1) = 800
.ColWidth(2) = 800
.ColWidth(3) = 800
.ColWidth(4) = 800
.ColWidth(4) = 800
.ColWidth(6) = 800
.ColWidth(7) = 6000
.ColWidth(8) = 800
.ColAlignmentFixed(0) = 1
.ColAlignment(0) = 1
End With
End Sub

Public Sub IniciarConexion()
With cnn
.CursorLocation = adUseClient
.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
App.Path & "obras.mdb" & ";Persist Security Info=False"
End With

End Sub

Function Autocompletar_MSHFlexGrid(MSHFlexGrid As Object, TBox As TextBox, columna As Long)

Dim i, j As Integer
Dim pos_SelStart As Integer

Set ConnPublic = New ADODB.Connection
Set rsPublic = New ADODB.Recordset

If (KeyRetroceso Or Len(TBox.Text) = 0) Then
KeyRetroceso = False
Exit Function
End If

With MSHFlexGrid
'Recorremos todas las filas del MshFlexgrid
For i = 0 To .Rows - 1
'Busca en el flexgrid si hay coincidencia, en la fila y columna actual
If InStr(1, .TextMatrix(i, columna), TBox.Text, vbTextCompare) = 1 Then
pos_SelStart = TBox.SelStart
'Asignamos el valor de la celda actual al textbox
TBox.Text = .TextMatrix(i, columna)
'Indicamos el comienzo de la selección
TBox.SelStart = pos_SelStart
'seleccionamos la porción de texto en el Text
TBox.SelLength = Len(.TextMatrix(i, columna)) - pos_SelStart
'Establecemos con TopRow , la fila arriba de todo
.TopRow = i
End If
Next i
End With

End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar