Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/09/2011, 13:19
orcojol
 
Fecha de Ingreso: diciembre-2010
Ubicación: barranquilla
Mensajes: 21
Antigüedad: 13 años, 11 meses
Puntos: 0
busqueda en paradox y .net

hola tengo una aplicacion en .net que utiliza entre otras una conexion a tablas de paradox.
la tabla de paradox tiene como 200.000 registros, y cuando hago una consulta por un criterio encuentra el registro de inmediato, pero cuando hago la consulta con varios criterios este no encuentra el registro. de esta manera
1. busco el registro por codigo, y me muestra el resultado. Ok
2. busco el registro por primer nombre, segundo nombre, primer apellido y segundo apellido y me muestra algunos registros, pero hay veces que no muestra nada y yo se que el registro si esta. les dejo el codigo de la busqueda por ambos criterios

este es el primer ejemplo.. busqueda por criterio ficha
Try
' Declarar la conexión y abrir
Using cn As OdbcConnection = New OdbcConnection(sConn)

TxtFicha.Text = String.Format("{0:00000000}", Convert.ToInt32(TxtFicha.Text))

' Crear un DataAdapter y pasarle el comando para traer los registros
Dim da As New OdbcDataAdapter("SELECT personah.ficha,personah.hogar,personah.orden,perso nah.ape1,personah.ape2,personah.nom1,personah.nom2 ,personah.tipodoc,personah.documen,personah.fechan to,personas.puntaje FROM personah,personas WHERE personah.ficha='" & Trim(CStr(Me.TxtFicha.Text)) & "' and personah.ficha=personas.ficha AND PERSONAH.ORDEN=PERSONAS.ORDEN AND PersonaH.hogar=PersonaS.hogar", cn)
Me.oDataAdapter = New OdbcDataAdapter("SELECT fichah.ficha,fichah.direcc,fichah.nombarrio FROM fichah WHERE Fichah.ficha = '" & Trim(CStr(Me.TxtFicha.Text)) & "'", sConn)

' llenar el DataTable
da.Fill(DTABLE)

' enlazar el DataTable al BindingSource
BindingSource1.DataSource = DTABLE

' propiedades para el DataGridview .

Dim oCommBuild As OdbcCommandBuilder = New OdbcCommandBuilder(oDataAdapter)
Me.oDataSet = New DataSet
cn.Open()
Me.oDataAdapter.Fill(oDataSet, "FICHAH")
cn.Close()
Me.iPosicFilaActual = 0

Dim oDataRow As DataRow
oDataRow = Me.oDataSet.Tables("FICHAH").Rows(Me.iPosicFilaAct ual)
Me.TxtFichas.Text = CStr(oDataRow("ficha"))
Me.TxtDir.Text = CStr(oDataRow("direcc"))
Me.TxtBarrio.Text = CStr(oDataRow("nombarrio"))
Me.BtnGuardar.Enabled = True

With DataGridView1

'decimales en datagrid
Dim col As DataGridViewColumn = Me.DataGridView1.Columns("puntaje")
col.DefaultCellStyle.Format = "N2"
' opcional: Sin selección múltiple
.MultiSelect = False
' seleccioanr fila completa al hacer clic en un registro
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
' enlazar los controles
.DataSource = BindingSource1.DataSource
End With

End Using
' errores
Catch ex As Exception
MsgBox(ex.Message.ToString)
'MsgBox("El numero de ficha no aparece", MsgBoxStyle.Information)
End Try


Segundo ejemplo este es el que me genera problemas

Try
' Declarar la conexión y abrir
Using cn As OdbcConnection = New OdbcConnection(sConn)

Dim N1 As String = Trim(CStr(Me.TxtNom1.Text))
Dim N2 As String = Trim(CStr(Me.TxtNom2.Text))
Dim A1 As String = Trim(CStr(Me.TxtApe1.Text))
Dim A2 As String = Trim(CStr(Me.TxtApe2.Text))

' Crear un DataAdapter y pasarle el comando para traer los registros
Dim da As New OdbcDataAdapter("SELECT personah.ficha,personah.hogar,personah.orden,perso nah.ape1,personah.ape2,personah.nom1,personah.nom2 ,personah.tipodoc,personah.documen,personah.fechan to,personas.puntaje FROM personah,personas WHERE personah.APE1 LIKE '" & A1 & "%' AND personah.APE2 LIKE '" & A2 & "%' AND personah.NOM1 LIKE '" & N1 & "%' AND personah.NOM2 LIKE '" & N2 & "%' and personah.ficha=personas.ficha AND PERSONAH.ORDEN=PERSONAS.ORDEN and personah.hogar=personas.hogar", cn)
Me.oDataAdapter = New OdbcDataAdapter("SELECT fichah.ficha,fichah.direcc,fichah.nombarrio FROM fichah,PERSONAH WHERE personah.APE1 LIKE '" & A1 & "%' AND personah.APE2 LIKE '" & A2 & "%' AND personah.NOM1 LIKE '" & N1 & "%' AND personah.NOM2 LIKE '" & N2 & "%' AND PERSONAH.FICHA=FICHAH.FICHA", sConn)
' llenar el DataTable
da.Fill(DTABLE)

' enlazar el DataTable al BindingSource
BindingSource1.DataSource = DTABLE

' propiedades para el DataGridview
With DataGridView1
'decimales en datagrid
Dim col As DataGridViewColumn = Me.DataGridView1.Columns("puntaje")
col.DefaultCellStyle.Format = "N2"

.EnableHeadersVisualStyles = True
' opcional: Sin selección múltiple
.MultiSelect = False
' seleccioanr fila completa al hacer clic en un registro
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
' enlazar los controles
.DataSource = BindingSource1.DataSource
End With

Dim oCommBuild As OdbcCommandBuilder = New OdbcCommandBuilder(oDataAdapter)
Me.oDataSet = New DataSet
cn.Open()
Me.oDataAdapter.Fill(oDataSet, "fichah")
cn.Close()
Me.iPosicFilaActual = 0

Dim oDataRow As DataRow
oDataRow = Me.oDataSet.Tables("fichah").Rows(Me.iPosicFilaAct ual)
Me.TxtFichas.Text = CStr(oDataRow("ficha"))
Me.TxtDir.Text = CStr(oDataRow("direcc"))
Me.TxtBarrio.Text = CStr(oDataRow("nombarrio"))
Me.BtnGuardar.Enabled = True
End Using
' errores
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try

por favor ayudenme.. no se que hacer