Visual Basic - Como traer datos a un DataGrid a partir de un TextBox

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 11
Ha disminuido su posición en 24 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Como traer datos a un DataGrid a partir de un TextBox

Publicado por MarianoD (5 intervenciones) el 03/07/2020 19:33:04
Hola Comunidad.

Les escribo por que estoy tratando de implementar un modulo de carga de trayectos para el software de mi empresa...

Lo que busco es que cuando se ejecute el evento TextChanged de mi Textbox el valor que se encontraba ahí sirva para buscar en mi base de datos y luego colocarlo en dicho DataGrid.

El Lenguaje que uso es VisualBasic 6.0 y no tengo muchos conocimientos del lenguaje la verdad...

Yo consegui algo similar que dijeron en este foro en su tiempo pero al conocer como tengo que armar toda la sintaxis no se como emplearla... Coloco lo que consegui aquí....

Adodc1.RecordSource = "SELECT Descripcion,Costo FROM Almacen WHERE codigo=" & Val(Text2)
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1


y alguien le respondio con esto:

agregar a tu control al metodo adodc.recordset.addnew el valor de text1.text.
setear denuevo el valor datasource a tu datagrid y llamar a un refresh.


Si tambien podrian pasarme algún link que muestre de que manera puedo llamar al Adodc para generar las conecciones y recordsets pertinentes me pueden ayudar mucho ya que estoy muy oxidado con lo que es Visual Basic... La verdad esto lo vi en mis años de secundaria y no me acuerdo casi nada de esto...

Muchas Gracias.
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
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Como traer datos a un DataGrid a partir de un TextBox

Publicado por Andres Leonardo (1798 intervenciones) el 03/07/2020 20:11:34
Puntos a considerar

Yo conecto mediante ODBC
No solo cuando cambia , ya que si la base tiene muchos registros hago una consulta por cada cambio del text es un alto consumo de recuersos de base, yo lo hago en un boton buscar y como parametro el text

Que base te conectas?

Saludos
Andres
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
sin imagen de perfil
Val: 11
Ha disminuido su posición en 24 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Como traer datos a un DataGrid a partir de un TextBox

Publicado por MarianoD (5 intervenciones) el 03/07/2020 21:15:01
Hola Andres!

La cosa es así...

Diariamente cargamos toda nuestra mercadería en camiones los cuales los responsables de la carga de esa mercadería tienen consigo una etiqueta que genera nuestro sistema con un codigo de barras que está asociado con un envio (ese codigo de barra solamente trae ese envio).

Yo lo que voy a hacer ahora es un modulo en el cual los responsables van a "declarar" esa mercadería que va a ir. Con ello le entregaremos un lector de codigo de barras el cual leeran ese codigo y el modulo automaticamente tiene que cargar en una grilla toda la información que corresponde a ese envio (Nro de Envio, Clientes que forman parte del envio, Sucursales de origen y destino, fecha cantidad de carga etc).

Te comento que el sistema que tenemos nosotros estamos conectados a un ODBC pero yo no sé como traer ese dataset así genero la consulta...

La consulta que debería yo de generar sería la siguiente...

En el Textchanged almacenar el CoddeEnvio (EnvioID)

Luego. creo que en el DataGrid debo de hacer la siguiente consulta...

Select EnvioId,ClienteIDOr,SucursalOr,ClienteDes,SucursalDes,CantidadCarga
From Envios Inner Join Clientes CliOr On CliOr.ClienteID = Envios.ClienteIDOR
Inner Join Clientes CliDes On CliDes.ClienteID = Envios.ClienteIDDES
Inner Join Sucursales SucOR On Envios.SucursalIDOr = SucOR.SucursalID
Inner Join Sucursales SucDES On Envios.SucursalIDDes = SucDES.SucursalID
Where EnvioID = Valor del Textbox -> que es lo que yó conseguí al ver el post que coloqué en mi pregunta...

Yo necesitaría saber como hago para transformar esa consulta en codigo de visual basic para que se llene esa Grilla y luego una vez finalizada la carga todos esos datos de la grilla se guarden en otra Tabla que tengo.

Muchas Gracias por tu respuesta y espero ser lo suficientemente claro!
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
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Como traer datos a un DataGrid a partir de un TextBox

Publicado por Andres Leonardo (1798 intervenciones) el 03/07/2020 23:11:30
pues no necesitas un data set LLena un recordset y lo cargas a un grid

Hablaste de VB6.0 si deseas con toda el sigilo del mundo te ayudo si necesitas algo mas

espero esto te ayude



**En un modulo crea la funcion del codigo qeu te pongo
adicional declara un recordset como publico para que funcione se debe llamar RSio
Adicional crea una variable String llamda SQL

**En un formulario crea un text y un msflexgrid

y en el boton busqueda o el evento change (Yo no te lo recomiendo) debido a que cuando lea el codigo de barras por cada caracter hara una consulta esto no es recomendable, deberia ser cuando este lleno el dato y la das tab o enter o un boton .. pero tu decides es tu codigo

SQL = "Select EnvioId,ClienteIDOr,SucursalOr,ClienteDes,SucursalDes,CantidadCarga"
SQL = SQL & " From Envios Inner Join Clientes CliOr On CliOr.ClienteID = Envios.ClienteIDOR"
SQL = SQL & " Inner Join Clientes CliDes On CliDes.ClienteID = Envios.ClienteIDDES"
SQL = SQL & " Inner Join Sucursales SucOR On Envios.SucursalIDOr = SucOR.SucursalID"
SQL = SQL & " Inner Join Sucursales SucDES On Envios.SucursalIDDes = SucDES.SucursalID"
SQL = SQL & " Where EnvioID = '" & textboxIDEnvio.text & "'"

llenagridx (me.msgFlexgrid1) ' o como se llame tu grid.

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
Sub llenagridX(Msf As MSFlexGrid)
 
 
On Error GoTo etterro
 
Cont = 0
Msf.Clear
Msf.Cols = 2
Msf.Rows = 2
'FileName = App.Path & "\Reporte_" & Format(Time, "HHMMSS") & ".xls"
'MsgBox SQL
Rsio.Open SQL, conexion 'Aqui el nombre de la conexion a tu base
 
'****si no hay resultados ********
    If Rsio.EOF = True And Rsio.BOF = True Then
    MsgBox "No existen Resultados para mostrar", vbInformation, "Consulta de Pendientes"
    Rsio.Close
    Exit Sub
    End If
'salgo del sub
'**********************************
 
Dim i, j, k As Integer
   'Rs.Open SQL, conexion
   Msf.Cols = Rsio.Fields.Count '+ 1
   Msf.Clear
 
   j = 0
   While j < Val(Msf.Cols)
    Msf.TextMatrix(0, j) = Rsio.Fields(j).Name 'da el nombre del select
'    datafile = datafile & Rsio.Fields(j).Name & vbTab
    Msf.ColWidth(j) = 2000 ' para dar un correcto ancho
     j = j + 1
   Wend
'            Open FileName For Append As 9
'                    Print #9, datafile
'                    datafile = ""
'            Close 9
 
    i = 1
    k = 0
    While Not Rsio.EOF
        i = i + 1
        Msf.Rows = i
        k = 0
        While k < j
            Msf.TextMatrix(i - 1, k) = "" & Rsio(k)
'            datafile = datafile & Msf.TextMatrix(i - 1, k) & vbTab
            k = k + 1
        Wend
'        datafile = datafile & vbCr
        Rsio.MoveNext 'aumenta el contador
    Wend
       Rsio.Close
 
 
'            Open FileName For Append As 9
'                    Print #9, datafile
'                    datafile = ""
'            Close 9
Exit Sub
 
etterro:
MsgBox Err.Description
End Sub


SAludos
Andres
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
sin imagen de perfil
Val: 11
Ha disminuido su posición en 24 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Como traer datos a un DataGrid a partir de un TextBox

Publicado por MarianoD (5 intervenciones) el 04/07/2020 00:35:30
Hola Andrés muy bueno tu aporte!

Ya me retiré de la oficina pero mañana por la mañana voy a estar trabajando en un par de proyectos desde mi casa ahí probaré tu consulta y te digo cómo me fue!

Tengo un par de dudas...

Todo lo que está comentado lo descontento?

Cuando hablas del nombre de la conexión haces referencia a donde yo guarde la cadena de conexión anteriormente? O al complemento que tiene la cadena (el adodc)? O habla de cuando declare el SQL ese que vos me hiciste llenar?

Yo lo que busco nuevamente es evitar que el usuario final tenga que apretar un entre sino que por cada vez que lea un código de barras esté se cargue en la Grid.
Luego yo voy a realizar un botón para que en caso de realizar un duplicado y/o error pueda borrar los envíos.

Muchas gracias por tu tiempo y dedicación. Yo no recuerdo tanto de vb6 pero trataré de interpretar tu código si me podes pasar info grafía para que pueda aprender del lenguaje te lo agradezco.

Mariano
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
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Como traer datos a un DataGrid a partir de un TextBox

Publicado por Andres Leonardo (1798 intervenciones) el 06/07/2020 15:34:26
lo que esta comentado son codigos para que el contenido del grid lo guarde en un txt ....
El nombde de la conexion es donde esta guardada la conexion que si esta referenciada a la cadena
El SQL es la consulta de select. eso es otra cosa.

*Se lo que buscas es que el usuario final presione enter pero yo no lo recomiendo cuando en tu tabla hay demasiados registros, o esten vonectados varios usuarios a la vez.

*En tu mente estara qeu cuando el usuario lea un codigo de barras pero eso cuando se cumple cuando lee al menos un x numero de caracters? por que al leer el primero aun no ha leido TODO el codigo ...

es solo por desempeño del equipo y el programa

Saludos
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
sin imagen de perfil
Val: 11
Ha disminuido su posición en 24 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Como traer datos a un DataGrid a partir de un TextBox

Publicado por MarianoD (5 intervenciones) el 06/07/2020 18:34:43
Andes! Te envié un pm con más dudas...

El código de barras por ahora cuenta con: 9 Caracteres (un primer dígito que es un 9 que es fijo y 8 que corresponden al código de envio).

Por lo que si primero debería de leer toda la cadena y luego disparar la búsqueda.

El modulo si esta pensado para que lo utilicen varios usuarios finales a la vez y no entiendo si debe de buscar la base un envio en especifico debería de demorar tanto...

La tabla de envios actualmente cuenta con aproximadamente alrededor de 500 a 600 mil registros y no solamente eso sino que debe de recorrer todas las uniones para que arme la grilla tal cual la quiero mostrar en el Flex.

Confirmame si recibiste el Pm sino te adjunto acá las imágenes de cómo vengo teniendo el código ya que no me estaría funcionando lo que vos me propones.

Muchas Gracias por tu tiempo y paciencia!
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
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Como traer datos a un DataGrid a partir de un TextBox

Publicado por Andres Leonardo (1798 intervenciones) el 06/07/2020 19:05:55
Hola como vas... Cito tu mensaje mis comentarios con negritas


Andes! Te envié un pm con más dudas... No me ha llegado

El código de barras por ahora cuenta con: 9 Caracteres (un primer dígito que es un 9 que es fijo y 8 que corresponden al código de envio).
Perfecto entonces validas que al menos tenga 9 caracteres para hacer la consulta , puesto qeu si pones cuando tiene el primer 9 se te va a llenar con toda la base .. .si no cuando conversemos te lo explico....

Por lo que si primero debería de leer toda la cadena y luego disparar la búsqueda.
digamos que si .. lo pememos mas bien es validar caracteer a caracter y cuando cumpla el criterio enviar la consulta a la base

El modulo si esta pensado para que lo utilicen varios usuarios finales a la vez y no entiendo si debe de buscar la base un envio en especifico debería de demorar tanto...
Ese es el problema el dato no es especifico hasta cuando este completo mientras no es especifico.

La tabla de envios actualmente cuenta con aproximadamente alrededor de 500 a 600 mil registros y no solamente eso sino que debe de recorrer todas las uniones para que arme la grilla tal cual la quiero mostrar en el Flex.
Rarzon suficiente para poder optimizar el codigo lo mas posble.


Confirmame si recibiste el Pm sino te adjunto acá las imágenes de cómo vengo teniendo el código ya que no me estaría funcionando lo que vos me propones.
El codigo que te paso te debe funcionar pues nO tienen nada que ver con la validacion .. una vez que tenga la consulta lista este codigto que pase te debe funcionar


Muchas Gracias por tu tiempo y paciencia!


De nada y saludosi
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
sin imagen de perfil
Val: 11
Ha disminuido su posición en 24 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Como traer datos a un DataGrid a partir de un TextBox

Publicado por Mariano (5 intervenciones) el 06/07/2020 19:21:28
Andres aca te dejo las imagenes de lo que he hecho hasta ahora (cree un formulario puse un textbox el flexgrid y cree el modulo) tmb puse un trozo de codigo que creo que invoca a la conexion de la base para poder trabajar con el recorset...

Img1
Img2
Img3

Decime bien más o menos que me falta...

Muchas Gracias.
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
sin imagen de perfil
Val: 355
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Como traer datos a un DataGrid a partir de un TextBox

Publicado por raul (160 intervenciones) el 07/07/2020 22:13:43
Tu problema es de Analisis.

Veras para implementar tu solución se requieren:

Un objeto Recorset, un Datagrid (NAME = DB1) y Un texbox (NAME = TEXT1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim RS as recordset 'Si abriste un proyecto de datos ya se cargaron las referencias necesarias no necesitas especificar adodb.recordset
dim CNN as ADODB.conection' Si se especifica aquí para evitarnos las referencias de DAO
DIM TEMP as string 'Solo por cuestiones de comodidad
 
'en el evento from_Load debes crear el Objeto
set  RS = new Recordset
set CNN = new ADOB.conection
'Creas la cadena de conexion de la database, la abres y dejas todo así
 
'en el evento KEYUP del text1 escribes esto
private sub DATOS_MOSTRAR(SQL as string) 'Necesitamos un parametro de texto
if rs.state <> 0 then 'Si esta cargado el recordset muestra un error por eso evitamos el error cerrandolo
   rs.close
end if
'Si se trata de un texto  tu declaración siempre funcionará pero no asi con los texto deverias evaluar por si acaso
TEMP = "SELECT Descripcion,Costo FROM Almacen WHERE codigo = " & val(text1.text) ' el parametro de la sub
rs.open temp, sql, adOpenDynamic, adLockOptimistic    'Estos parametros son necesarios para los DATAGRID
set  DB1. Datasource = RS
end sub

Nota: los eventos keyup y change de los texbox son parecidos; pero si el parametro en los textbox, se va a escribir me gusta el keyup ya que se asegura de ejecutar el codigo solo cuando sueltas la tecla. por ejemplo tienes en un texbox algo escrito "jjkhsa" tu seleccionas este texto y oprimes una tecla "A" desencadenado el evento change porque la cadena original fue borrada pero el caracter "A" aun no se ha añadido o sea que cuando sueltas la tecla nuevamente se desencadena el evento CHANGE ya que nuevamente se ha cambiado el texto.
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