Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/01/2006, 06:19
Avatar de moNTeZIon
moNTeZIon
 
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 20 años, 1 mes
Puntos: 9
Problemas al mandar sql con parametros

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!
__________________
..:: moNTeZIon ::..

Última edición por moNTeZIon; 24/01/2006 a las 06:28