buscar un valor

07/12/2005 - 09:42 por Sonia | Informe spam
hola!
estaba utilizando una funcion para buscar determinado valor en la bd, y la
usaba así



mysql = "select max(ID_LINEA) from LINEA_PEDIDO"

BuscarValor(mysql, "LINEA_PEDIDO", linia)

la uso bastante en mi programa y me han dicho q esto retrasará el trabajo ya
q que para cada busqueda que hace tal y como te comente en un anterior
correo, genera una base de datos nuevecita, hace la busqueda y la desecha

os pongo la funcion por si sabeis de alguna forma mejora de hacer esto sin q
cueste tanto (tiempo)

gracias!


Public Sub BuscarValor(ByVal Sql As String, ByVal tabla As String, ByRef
valor As Object)

Try

Dim conexion As New OleDb.OleDbConnection

conexion.ConnectionString = CadenaConexion

Dim MiDataAdapter As OleDb.OleDbDataAdapter = New
OleDb.OleDbDataAdapter(Sql, conexion)

Dim MiDataSet As DataSet = New DataSet

MiDataAdapter.Fill(MiDataSet, tabla)

Dim MiTabla As DataTable = MiDataSet.Tables(tabla)

Dim Fila As DataRow

For Each Fila In MiTabla.Rows

If IsDBNull(Fila.Item(0)) Then

valor = -1

Else : valor = Fila.Item(0)

End If

Next

Catch Errores As Exception

MsgBox(Err.Description)

End Try



End Sub

Preguntas similare

Leer las respuestas

#1 SoftJaén
07/12/2005 - 11:15 | Informe spam
"Sonia" escribió:

estaba utilizando una funcion para buscar determinado valor en la bd, y la
usaba así

mysql = "select max(ID_LINEA) from LINEA_PEDIDO"




Hola, Sonia:

No sé muy bien lo que deseas hacer con la consulta SQL que has indicado: si
buscar el valor máximo de un campo de la tabla, o buscar un valor
determinado existente en un campo.

Si es ésto último lo que deseas hacer, simplemente tienes que ejecutar una
consulta de selección, indicándole un criterio que deber cumplir con las
condiciones especificadas en una cláusula WHERE:

mysql = "SELECT ID_LINEA FROM LINEA_PEDIDO " & _
"WHERE ID_LINEA = 'lo que sea'"

De todas formas, para ejecutar una u otra consulta, tampoco hace falta que
recorras todas las filas de un objeto DataTable. Si la consulta devuelve un
único valor, te puede servir el método «ExecuteScalar» de un objeto
«OleDbCommand»:

' Definimos la consulta
mysql = "select max(ID_LINEA) from LINEA_PEDIDO"

' Creamos el comando
Dim cmd As New OleDbCommand(mysql, cnn)

' Leemos el valor
TextBox1.Text = comando.ExecuteScalar().ToString

Por supuesto, debe de haber una conexión abierta con la base de datos,
referenciada en el ejemplo por la variable objeto «cnn».

Por último, ejecuta el código dentro de un bloque Try ... End Try, para
detectar el error que se pueda producir por si no existe un campo que cumpla
con el criterio especificado en la consulta, de ésta forma, si ejecutas el
código dentro de una función, puedes devolver, por ejemplo, el valor -1.

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#2 Harvey Triana
07/12/2005 - 16:13 | Informe spam
Sonia-

Si quieres algo optimo te recomiendo dos cosas:

1. Cláusula WHERE (forwardonly) y verificar si el conjunto de datos
devueltos es vació
2. Mejor aun - Abrir un SQL general a nivel del objeto, consultarlo cuando
necesites (por métodos de busqueda, -no por busqueda secuencial), y
eliminarlo cuando termine el objeto.

Saludes,
ht

"Sonia" escribió en el mensaje
news:Ou8aRnw%

hola!
estaba utilizando una funcion para buscar determinado valor en la bd, y la
usaba así



mysql = "select max(ID_LINEA) from LINEA_PEDIDO"

BuscarValor(mysql, "LINEA_PEDIDO", linia)

la uso bastante en mi programa y me han dicho q esto retrasará el trabajo
ya
q que para cada busqueda que hace tal y como te comente en un anterior
correo, genera una base de datos nuevecita, hace la busqueda y la desecha

os pongo la funcion por si sabeis de alguna forma mejora de hacer esto sin
q
cueste tanto (tiempo)

gracias!


Public Sub BuscarValor(ByVal Sql As String, ByVal tabla As String, ByRef
valor As Object)

Try

Dim conexion As New OleDb.OleDbConnection

conexion.ConnectionString = CadenaConexion

Dim MiDataAdapter As OleDb.OleDbDataAdapter = New
OleDb.OleDbDataAdapter(Sql, conexion)

Dim MiDataSet As DataSet = New DataSet

MiDataAdapter.Fill(MiDataSet, tabla)

Dim MiTabla As DataTable = MiDataSet.Tables(tabla)

Dim Fila As DataRow

For Each Fila In MiTabla.Rows

If IsDBNull(Fila.Item(0)) Then

valor = -1

Else : valor = Fila.Item(0)

End If

Next

Catch Errores As Exception

MsgBox(Err.Description)

End Try



End Sub





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida