Miren, me ocurre lo siguiente. Tengo esta funcion:
Código:
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.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
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:
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.Dim cMSelect As New OleDbCommand("SELECT * FROM Clientes WHERE IIF(Len(Apellidos)>0, Apellidos + ' ' + Nombre, Nombre) = '" & Nombre & "' AND Direccion = '" & Direccion & "'", cN)
Alguna ayudita plis.
Muchas Gracias!