Buenos días,
Miren, me ocurre lo siguiente. Tengo esta funcion:
Código:
Public Function DameDetallesCliente_Destino(ByVal Nombre As String, ByVal Direccion As String) As DetallesCliente
Dim cN As New OleDbConnection(ConnStrDestino)
Dim cMSelect As New OleDbCommand("SELECT * FROM Clientes WHERE IIF(Len(Apellidos)>0, Apellidos + ' ' + Nombre, Nombre) = @Nombre AND Direccion = @Direccion", cN)
cMSelect.Parameters.Add("@Direccion", OleDbType.VarChar, 200)
cMSelect.Parameters.Add("@Nombre", OleDbType.VarChar, 150)
cMSelect.Parameters("@Direccion").Value = Direccion
cMSelect.Parameters("@Nombre").Value = Nombre
Dim dR As OleDbDataReader
Dim misDetallesCliente As New DetallesCliente
misDetallesCliente.IdCliente = 0
Try
cN.Open()
dR = cMSelect.ExecuteReader
If dR.Read Then
misDetallesCliente.IdCliente = dR("IdCliente")
misDetallesCliente.Nombre = dR("Nombre")
misDetallesCliente.Apellidos = dR("Apellidos")
misDetallesCliente.Direccion = dR("Direccion")
misDetallesCliente.Poblacion = dR("Poblacion")
misDetallesCliente.Telf1 = dR("Telf1")
misDetallesCliente.Telf2 = dR("Telf2")
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
If cN.State = ConnectionState.Open Then cN.Close()
cN.Dispose()
Return misDetallesCliente
End Function
El Tema está en el IIF, supongo, de la consulta. Ocurre que si capto los valores que están tomando los dos parámetros y ejecuto la consulta desde Access directamente, me devuelve el registro que cumple la condición. Dicho de otra manera, el registro existe.
Pero resulta que cuando ejecuto el código, no entra en el IF DR.READ THEN
sino que se va al else.
Yo llevo un buen rato, e imagino que será porqué no estoy utilizando del todo bien los parámetros...
Porqué si elimino todo el tema de los parámetros y lo hago a pelo, si funciona. Me refiero a sustituir la linea donde especifico la SQL por esta:
Código:
Dim cMSelect As New OleDbCommand("SELECT * FROM Clientes WHERE IIF(Len(Apellidos)>0, Apellidos + ' ' + Nombre, Nombre) = '" & Nombre & "' AND Direccion = '" & Direccion & "'", cN)
Y sin utilizar parámetros, entonces si que entra en el IF. Vamos, que seguro que se trata que hago mal algo con los parámetros.
Alguna ayudita plis.
Muchas Gracias!