SqlCommandBuilder

01/10/2004 - 03:51 por Pablo Fabian Savino | Informe spam
Hola grupo,

como puedo pasar a un store procedure una fecha en formato ANSII desde un
SqlCommandBuilder ?

me pasa lo siguiente, estoy utilizando un SqlCommand.SqlCommandBuilder pero
al intentar pasarle una fecha (en el SP el parametro es datetime) a ese
CommandBuilder me da errores, por ejemplo que el string no es correcto para
un formato de fecha, despues que es invalido el cast from string to integer
, pero si yo estoy intentando pasar una fecha!!

se supone que el SqlCommandBuilder puede ver en el SP el tipo de dato para
el parametro, pues bien , eso lo hace bien porque ya lo verifique, pero al
pasarle la fecha (sea el formato que sea) me da error, errores que mas
arriba comente.

Entonces, como paso la fecha al SqlCommandBuilder para luego ejecutar mi SP
?


Saludos

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
01/10/2004 - 05:44 | Informe spam
A ver si entiendo, porque al SqlCommandBuilder no se le pasan los
parametros. Supuestamente estas usando SqlCommandBuilder.DeriveParameters
para obtener los parametros del SP y cargar la coleccion de parametros.
Entonces si como valor del parametro pones una fecha como tipo Date no
deberia haber ningun problema. Si eso es lo que estas haciendo, asegurate de
que estas asignando el valor al parametro correcto y que este este definido
como datetime.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 Pablo Fabian Savino
01/10/2004 - 08:17 | Informe spam
Hola Eduardo, es correcto lo que dices que uso, y para hacegurarme que mi
fecha valla al parametro correcto, tengo un if preguntando si el parametro
(del array del constructor) es DateTime y efectibamente lo es, pero no
quiere poner mi fecha, es mas, sino recuerdo mal tu me pasaste esa funcion y
anda perfecto, solo por este temita de la fecha, este el el codigo:

Se asume que la conexion esta en otra funcion ok!!


'Ejecuta DataSet por medio de SP

Function EjecutarSP_DS(ByVal NombreSP As String, ByRef Ds As DataSet, _
ByVal ParamArray Parametros() As Object)

Dim Cmd As New SqlClient.SqlCommand(NombreSP, CnSQL)
Dim CmdB As New SqlClient.SqlCommandBuilder()
Dim Da As New SqlClient.SqlDataAdapter()
Dim DsS As New DataSet()
Dim I As Integer

Try

Cmd.CommandType = CommandType.StoredProcedure
Call conecta()
CmdB.DeriveParameters(Cmd)

For I = 1 To Parametros.Length
If Cmd.Parameters.Item(I).SqlDbType = SqlDbType.DateTime
Then
'AQUI INTENTO DARLE EL FORMATO ANSII A LA FECHA,
PERO NO FUNCIONA y
'SI LO ENVIO EN ANSII , TAMPOCO FUNCIONA.
'No presento el codigo con el cual doy el formato
ANSII porque no se como hacerlo, siempre da error!!!
Cmd.Parameters.Item(I).Value = Parametros(I - 1)
Else
'Si no es Fecha.
Cmd.Parameters.Item(I).Value = Parametros(I - 1)
End If
Next

Da.SelectCommand = Cmd
Da.Fill(DsS, "tabla")
Ds = DsS

Catch er As SqlClient.SqlException
Desconectarme()
Throw er
Catch ex As Exception
Desconectarme()
Throw New System.Exception("Error indefinido en la
transacción")
Finally
Desconectarme()
DsS.Dispose()
Da.Dispose()
End Try
End Function

A ver que se te ocurre.
Saludos

"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> wrote in message
news:%
A ver si entiendo, porque al SqlCommandBuilder no se le pasan los
parametros. Supuestamente estas usando SqlCommandBuilder.DeriveParameters
para obtener los parametros del SP y cargar la coleccion de parametros.
Entonces si como valor del parametro pones una fecha como tipo Date no
deberia haber ningun problema. Si eso es lo que estas haciendo, asegurate
de
que estas asignando el valor al parametro correcto y que este este
definido
como datetime.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
01/10/2004 - 08:33 | Informe spam
Dim CmdB As New SqlClient.SqlCommandBuilder()



Si solo vas a usar DeriveParameters no es necesario crear una instancia de
SqlCommandBuilder ya que es un miembro Shared.

El parametro que le pasas a la funcion, ¿de que tipo es?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#4 Pablo Fabian Savino
01/10/2004 - 08:57 | Informe spam
la funcion la llamo asi desde el formulario:


Server.EjecutarSP_DS("facturas_cliente", DsF, Id_cliente, _
Me.Da_desde.Value, _
Me.Da_hasta.Value, _
Tipo)

Donde:
facturas_cliente es el SP
DSF es mi dataset que llenaria para crystal (xls)
id_cliente es un Int (un parmetro Int en el SP)
Da_desde y Da_hasta es un DateTimePicker
Tipo es un int (un parametro int en el SP)

El orden de los parametros esta bien, asi es la parte del principio del SP :
create proc dbo.facturas_cliente
(
@cliente int,
@ini datetime,
@fin datetime,
@tipo int
)

El error que me tira es este:
specified cast is not valid

Pero la funcion anda perfecta , solo falla cuando intento pasar fechas, (yo
en el server las menejo en ANSII , pero el formato ANSII ya se lo mando
desde la aplicacion)

No se que pasa con las fechas!!!





"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> wrote in message
news:
Dim CmdB As New SqlClient.SqlCommandBuilder()



Si solo vas a usar DeriveParameters no es necesario crear una instancia de
SqlCommandBuilder ya que es un miembro Shared.

El parametro que le pasas a la funcion, ¿de que tipo es?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP VB]
01/10/2004 - 09:40 | Informe spam
La verdad es que no se me ocurre nada que pueda estar mal con los
parametros. ¿No sera algun error dentro del SP?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida