Buscar un registro

20/09/2006 - 12:37 por Ira | Informe spam
Hola

Necesito buscar un registro en una tabla. El criterio de búsqueda es de dos
campos de la tabla.

¿Cómo lo hago?

Preguntas similare

Leer las respuestas

#1 floyd303
20/09/2006 - 12:42 | Informe spam
Hola!

Tu pregunta es muy generica.
La respuesta, a su vez generica, es:

SELECT * FROM Tabla WHERE Campo1='Valor1' AND Campo2='Valor2'

Saludos
Roberto M. Oliva

Ira ha escrito:

Hola

Necesito buscar un registro en una tabla. El criterio de búsqueda es de dos
campos de la tabla.

¿Cómo lo hago?
Respuesta Responder a este mensaje
#2 Ira
20/09/2006 - 17:25 | Informe spam
Tienes razón Roberto,

Este es un fragmento de mi código, ¿tu como lo harías?



Adaptador = New OleDbDataAdapter("SELECT * FROM PedidoPolypal", Conexion)

Cmb = New OleDbCommandBuilder(Adaptador) 'Esta línea crea los comandos
insert, update y delete en nuestro dataadapter



Try

Adaptador.Fill(Ds, "PedidoPolypal")

Catch ex As Exception

MessageBox.Show("Error en Fill:" & vbCrLf & ex.Message)

End Try



TablaPolypal = Ds.Tables("PedidoPolypal")

Adaptador.Update(Ds, "PedidoPolypal")







Adaptador = New OleDbDataAdapter("SELECT * FROM Conversion", Conexion)



Try

'Adaptador.FillSchema(Ds, SchemaType.Source, "Conversion")

Adaptador.Fill(Ds, "Conversion")

Catch ex As Exception

MessageBox.Show("Error en Fill:" & vbCrLf & ex.Message)

End Try



TablaConversion = Ds.Tables("Conversion")

Adaptador.Update(Ds, "Conversion")



'Primero borrar todos los datos de una tabla

Cm = New OleDbCommand("DELETE * FROM PedidoLFV", Conexion)

Cm.ExecuteNonQuery()

'Borrados los datos de la tabla



Adaptador = New OleDbDataAdapter("SELECT * FROM PedidoLFV", Conexion)

Cmb = New OleDbCommandBuilder(Adaptador)



Try

Adaptador.Fill(Ds, "PedidoLFV")

Catch ex As Exception

MessageBox.Show("Error en Fill:" & vbCrLf & ex.Message)

End Try



TablaLFV = Ds.Tables("PedidoLFV")

Adaptador.Update(Ds, "PedidoLFV")



Dim RegistroPolypal, RegistroLFV, RegistroConversion As DataRow

'Crear un array para poder buscar por más de un campo

Dim ArrayKeys(1) As Object

Dim Posicion As Integer

For Each RegistroPolypal In TablaPolypal.Rows

'Establecer los valores de las claves para buscar

ArrayKeys(0) = RegistroPolypal("Codigo")

ArrayKeys(1) = RegistroPolypal("Dim1")

RegistroConversion = TablaConversion.Rows.Find(ArrayKeys)



If Not (RegistroConversion Is Nothing) Then 'Se ha encontrado el código
polypal en la tabla conversión



Dim RegistroNuevo As DataRow

Posicion += 10

RegistroLFV = TablaLFV.NewRow

RegistroLFV("NPedido") =
CInt(Trim(TxtPedido.Text))

RegistroLFV("Posicion") = Posicion

RegistroLFV("Cliente") = Trim(TxtCliente.Text)

RegistroLFV("CodLFV") =
RegistroConversion("CodLFV")

RegistroLFV("CodPolypal") =
RegistroPolypal("Codigo")



TablaLFV.Rows.Add(RegistroLFV)

Adaptador.Update(Ds, "PedidoLFV")

TablaLFV.AcceptChanges()



Else 'No se ha encontrado el código Polypal en la Tabla de Conversiones

MsgBox("No se ha encontrado la correspondencia "
& RegistroPolypal("codigo"))

End If



Mi problema es que no me encuentra nada. Me da la impresión que el método
find no es el más correcto.

Me puedes aconsejar de como lo harías tu. Yo lo tengo hecho de otra forma y
funciona pero casi me da vergüenza decir como lo he hecho. Me gustaría saber
hacerlo elegantemente.



Gracias Roberto
Respuesta Responder a este mensaje
#3 floyd303
20/09/2006 - 18:49 | Informe spam
Hola!

Tendria que dedicarle un poco mas de tiempo a darte una respuesta mas
exacta. Probablemente alguien de la lista lo tenga mas a mano... pero
lo que se me ocurre, a bote pronto, es hacer una query directamente:

Dim oCmd As SqlCommand = New SqlCommand

' si el dataset contiene algo, hay que reinicializarlo
Data.DataSet ds = New Data.DataSet

' inicializar el objeto comando
oCmd.Connection = Conexion
oCmd.CommandText = strSQL
oCmd.CommandType = CommandType.Text

' Inicializar el objeto DataSet
oDa.SelectCommand = oCmd
oDa.Fill(ds, "TablaPolypal")

Y en strSQL la sentencia SQL que realiza la busqueda.
Lo que pasa es que tu te estas trayendo antes el DataSet de la base de
datos con las tablas que necesitas y quieres realizar una busqueda
sobre ese DataSet y no crear uno nuevo como te propongo yo... Has
probado el metodo Select del DataTable? Mira el siguiente enlace:
http://msdn.microsoft.com/library/s...ttopic.asp
No se si es exactamente lo que buscas... si no es asi dimelo a ver si
te puedo ayudar... o alguien de la lista.

Un saludo
Roberto M. Oliva


Ira ha escrito:

Tienes razón Roberto,

Este es un fragmento de mi código, ¿tu como lo harías?



Adaptador = New OleDbDataAdapter("SELECT * FROM PedidoPolypal", Conexion)

Cmb = New OleDbCommandBuilder(Adaptador) 'Esta línea crea los comandos
insert, update y delete en nuestro dataadapter



Try

Adaptador.Fill(Ds, "PedidoPolypal")

Catch ex As Exception

MessageBox.Show("Error en Fill:" & vbCrLf & ex.Message)

End Try



TablaPolypal = Ds.Tables("PedidoPolypal")

Adaptador.Update(Ds, "PedidoPolypal")







Adaptador = New OleDbDataAdapter("SELECT * FROM Conversion", Conexion)



Try

'Adaptador.FillSchema(Ds, SchemaType.Source, "Conversion")

Adaptador.Fill(Ds, "Conversion")

Catch ex As Exception

MessageBox.Show("Error en Fill:" & vbCrLf & ex.Message)

End Try



TablaConversion = Ds.Tables("Conversion")

Adaptador.Update(Ds, "Conversion")



'Primero borrar todos los datos de una tabla

Cm = New OleDbCommand("DELETE * FROM PedidoLFV", Conexion)

Cm.ExecuteNonQuery()

'Borrados los datos de la tabla



Adaptador = New OleDbDataAdapter("SELECT * FROM PedidoLFV", Conexion)

Cmb = New OleDbCommandBuilder(Adaptador)



Try

Adaptador.Fill(Ds, "PedidoLFV")

Catch ex As Exception

MessageBox.Show("Error en Fill:" & vbCrLf & ex.Message)

End Try



TablaLFV = Ds.Tables("PedidoLFV")

Adaptador.Update(Ds, "PedidoLFV")



Dim RegistroPolypal, RegistroLFV, RegistroConversion As DataRow

'Crear un array para poder buscar por más de un campo

Dim ArrayKeys(1) As Object

Dim Posicion As Integer

For Each RegistroPolypal In TablaPolypal.Rows

'Establecer los valores de las claves para buscar

ArrayKeys(0) = RegistroPolypal("Codigo")

ArrayKeys(1) = RegistroPolypal("Dim1")

RegistroConversion = TablaConversion.Rows.Find(ArrayKeys)



If Not (RegistroConversion Is Nothing) Then 'Se ha encontrado el código
polypal en la tabla conversión



Dim RegistroNuevo As DataRow

Posicion += 10

RegistroLFV = TablaLFV.NewRow

RegistroLFV("NPedido") > CInt(Trim(TxtPedido.Text))

RegistroLFV("Posicion") = Posicion

RegistroLFV("Cliente") = Trim(TxtCliente.Text)

RegistroLFV("CodLFV") > RegistroConversion("CodLFV")

RegistroLFV("CodPolypal") > RegistroPolypal("Codigo")



TablaLFV.Rows.Add(RegistroLFV)

Adaptador.Update(Ds, "PedidoLFV")

TablaLFV.AcceptChanges()



Else 'No se ha encontrado el código Polypal en la Tabla de Conversiones

MsgBox("No se ha encontrado la correspondencia "
& RegistroPolypal("codigo"))

End If



Mi problema es que no me encuentra nada. Me da la impresión que el método
find no es el más correcto.

Me puedes aconsejar de como lo harías tu. Yo lo tengo hecho de otra forma y
funciona pero casi me da vergüenza decir como lo he hecho. Me gustaría saber
hacerlo elegantemente.



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