Foros del Web » Programación para mayores de 30 ;) » .NET »

Mejorar la Obtencion de Datos, para desplegarlos, via ODBC

Estas en el tema de Mejorar la Obtencion de Datos, para desplegarlos, via ODBC en el foro de .NET en Foros del Web. Que tal compañeros Con una consulta. Tengo una Forma (form, ventana) que despliega mucha informacion de cierto producto, esta se abre luego que se selecciona ...
  #1 (permalink)  
Antiguo 06/11/2012, 11:57
Avatar de Jamsito  
Fecha de Ingreso: agosto-2012
Mensajes: 28
Antigüedad: 11 años, 8 meses
Puntos: 0
Pregunta Mejorar la Obtencion de Datos, para desplegarlos, via ODBC

Que tal compañeros

Con una consulta.

Tengo una Forma (form, ventana) que despliega mucha informacion de cierto producto, esta se abre luego que se selecciona dicho producto.

en esta ventanita tengo Textbox en los cuales yo coloco la informacion de la base de datos :)

ahi todo bien, la cuestion es que tarda mucho en abrir (15 segundos) mientras que las demas formas del programa no tardan ni 1 segundo en abrir entonces si se nota la diferencia con esta

yo estoy usando conexion odbc, y este es mi codigo, el cual busca el primer registro de la tabla y lo obtiene, luego busca otro registro y lo trae, todos estos registros los guardo en variables las cuales yo las coloco en los Textbox antes mencionados

el problema es que hago un select por cada campo que obtengo de la base de datos , les deje un ejemplo de 4 campos que obtengo

Código SQL:
Ver original
  1. ' Aqui me conecto
  2. Dim conexionODBC As New OdbcConnection
  3. Dim cadenaConexion As String = ("dsn=" & varGlobalServer & ";uid=" & varGlobalUsuario & ";pwd=" & varGlobalContrasena & ";")
  4. conexionODBC.ConnectionString = cadenaConexion
  5. conexionODBC.Open()
  6.  
  7. 'Aqui hago las consultas a la BD
  8. Dim varDesProducto AS NEW OdbcCommand("Select DESCRIPCION_PROD from MAESTRO_PRODUCTOS WHERE PRODUCT0='" & txtCodProducto.Text & "'", conexionODBC)
  9. Dim varDesCodUni AS NEW OdbcCommand("Select DESCRP_UNIDAD_VENTA from UNIDADES_DE_VENTA WHERE CODIGO_UNIDAD_VENTA='" & txtCodigoUnidad.Text & "'", conexionODBC)
  10. Dim varDesBodega AS NEW OdbcCommand("Select DESCRIPCION_BODEGA from MAESTRO_DE_BODEGAS WHERE CODIGO_BODEGA='" & txtCodBodega.Text & "'", conexionODBC)
  11. Dim varDesUbi AS NEW OdbcCommand("Select DESCRIP_UBICACION from UBICACIONES WHERE CODIGO_DE_UBICACION='" & txtCodUbi.Text & "'", conexionODBC)
  12.  
  13. 'Aqui coloco en los Textbox el valor obtenido en las consultas de arriba, pero antes evaluo si hay un nulo, puesto que si encuentra nulo y no verifico el programa da error
  14. If IsDBNull(varDesProducto.ExecuteScalar) Then
  15.            txtDescProducto.Text = ""
  16. Else
  17.            txtDescProducto.Text = varDesProducto.ExecuteScalar
  18. End If
  19. If IsDBNull(varDesCodUni.ExecuteScalar) Then
  20.            txtDescUnidad.Text = ""
  21. Else
  22.            txtDescUnidad.Text = varDesCodUni.ExecuteScalar
  23. End If
  24. If IsDBNull(varDesBodega.ExecuteScalar) Then
  25.            txtDescBodega.Text = ""
  26. Else
  27.            txtDescBodega.Text = varDesBodega.ExecuteScalar
  28. End If
  29. If IsDBNull(varDesUbi.ExecuteScalar) Then
  30.            txtDescUbicacion.Text = ""
  31. Else
  32.            txtDescUbicacion.Text = varDesUbi.ExecuteScalar
  33. End If

bueno y asi con un monton de campos que obtengo de la base de datos., en el ejemplo de arriba consulto de distintas tablas , pero hay veces que necisto info de la misma tabla

yo quisiera saber si hay un metodo de tirar solo una consulta y luego obtener los campos individualmente y meterlos en los textobx para desplegarlos, supongo que esto seria mucho mas rapido.

me comentan que en visual 5 existe algo que se llama recordset , pero no se a que se refiere y ando perdido en el tema

talvez alguien me puede ayudar

Gracias de antemano
  #2 (permalink)  
Antiguo 06/11/2012, 12:23
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Mejorar la Obtencion de Datos, para desplegarlos, via ODBC

Puedes usar un TOP 1 en tus consultas si es en SQL, si es en Postrge usa el LIMIT 1, si solo ocupas consultar el primer campo con eso lo puedes hacer.

Puedes usar un SP, si tienes campos que se crucen puedes usar un join y en una consulta obtienes 2 campos sin necesidad de hacer tantas consultas.

La otra es en un SP ir asignando a variables los valores, pero el TOP 1 se me hace que es mas rapido.

  #3 (permalink)  
Antiguo 06/11/2012, 13:15
Avatar de Jamsito  
Fecha de Ingreso: agosto-2012
Mensajes: 28
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Mejorar la Obtencion de Datos, para desplegarlos, via ODBC

Cita:
Iniciado por drako_darpan Ver Mensaje
Puedes usar un TOP 1 en tus consultas si es en SQL, si es en Postrge usa el LIMIT 1, si solo ocupas consultar el primer campo con eso lo puedes hacer.

Puedes usar un SP, si tienes campos que se crucen puedes usar un join y en una consulta obtienes 2 campos sin necesidad de hacer tantas consultas.

La otra es en un SP ir asignando a variables los valores, pero el TOP 1 se me hace que es mas rapido.


gracias por responder, la cuestion es que para eso sirve el execute scalar te obtiene la primer fila, con la restriccion de la consulta no hay problemas

lo que yo quisiera es poder tirar un select y luego poder agarrar cada campo de ese select y meterlo a una variable para luego desplegarlo en pantalla :)
  #4 (permalink)  
Antiguo 06/11/2012, 13:19
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: Mejorar la Obtencion de Datos, para desplegarlos, via ODBC

Creo que la optimizacion del query lo puedes consultar en el Foro de SQL estimado Jamsito. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 06/11/2012, 13:23
Avatar de Jamsito  
Fecha de Ingreso: agosto-2012
Mensajes: 28
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Mejorar la Obtencion de Datos, para desplegarlos, via ODBC

Cita:
Iniciado por Aquaventus Ver Mensaje
Creo que la optimizacion del query lo puedes consultar en el Foro de SQL estimado Jamsito. Saludos!.
vuelvo abrir el tema o como seria jejejeje..

lo coloque aqui por que pienso que lo que lentea la forma es el codigo del visual basic

los commands y los execute.scalar

saludos
  #6 (permalink)  
Antiguo 06/11/2012, 14:16
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Mejorar la Obtencion de Datos, para desplegarlos, via ODBC

Hola que tal, puedes hacer un SP como te comente y mandarle los parametros. Luego haces la consulta y lo asignas a variables que son las que regresarias:

Código SQL:
Ver original
  1. DECLARE @sDecripcion VARCHAR(20),
  2.         @sUnidad VARCHAR(20),
  3.         @sBodega VARCHAR(20),
  4.         @sUbicacion VARCHAR(20)
  5.  
  6. SELECT TOP 1 @sDecripcion = DESCRIPCION_PROD FROM MAESTRO_PRODUCTOS WHERE PRODUCT0='X'
  7. SELECT TOP 1 @sUnidad = DESCRP_UNIDAD_VENTA FROM UNIDADES_DE_VENTA WHERE CODIGO_UNIDAD_VENTA='Y'
  8. SELECT TOP 1 @sBodega = DESCRIPCION_BODEGA FROM MAESTRO_DE_BODEGAS WHERE CODIGO_BODEGA='123'
  9. SELECT TOP 1 @sUbicacion = DESCRIP_UBICACION FROM UBICACIONES WHERE CODIGO_DE_UBICACION='Z'
  10.  
  11. SELECT @sDecripcion AS Decripcion, @sUnidad AS Unidad, @sBodega AS Bodega, @sUbicacion = Ubicacion

Y con eso obtienes los valores que necesitas, asi solo haces una consultar al SP y el se encarga de todo lo demas.

Al recibir los valores ocuparias un reader y con eso asignarlo a los campos.

  #7 (permalink)  
Antiguo 06/11/2012, 16:58
Avatar de Jamsito  
Fecha de Ingreso: agosto-2012
Mensajes: 28
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Mejorar la Obtencion de Datos, para desplegarlos, via ODBC

Cita:
Iniciado por drako_darpan Ver Mensaje
Hola que tal, puedes hacer un SP como te comente y mandarle los parametros. Luego haces la consulta y lo asignas a variables que son las que regresarias:

Código SQL:
Ver original
  1. DECLARE @sDecripcion VARCHAR(20),
  2.         @sUnidad VARCHAR(20),
  3.         @sBodega VARCHAR(20),
  4.         @sUbicacion VARCHAR(20)
  5.  
  6. SELECT TOP 1 @sDecripcion = DESCRIPCION_PROD FROM MAESTRO_PRODUCTOS WHERE PRODUCT0='X'
  7. SELECT TOP 1 @sUnidad = DESCRP_UNIDAD_VENTA FROM UNIDADES_DE_VENTA WHERE CODIGO_UNIDAD_VENTA='Y'
  8. SELECT TOP 1 @sBodega = DESCRIPCION_BODEGA FROM MAESTRO_DE_BODEGAS WHERE CODIGO_BODEGA='123'
  9. SELECT TOP 1 @sUbicacion = DESCRIP_UBICACION FROM UBICACIONES WHERE CODIGO_DE_UBICACION='Z'
  10.  
  11. SELECT @sDecripcion AS Decripcion, @sUnidad AS Unidad, @sBodega AS Bodega, @sUbicacion = Ubicacion

Y con eso obtienes los valores que necesitas, asi solo haces una consultar al SP y el se encarga de todo lo demas.

Al recibir los valores ocuparias un reader y con eso asignarlo a los campos.

excelente!!!!!!!!!!!!!!!!

Etiquetas: odbc, select, visual, busquedas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:03.