Visual Basic - Error raro en INSERT

Life is soft - evento anual de software empresarial
 
Vista:

Error raro en INSERT

Publicado por pedrok (155 intervenciones) el 13/03/2006 23:20:08
Hola gente

Estoy programando VB contra sql 2000 sp3 y al ejecutar la siguiente INSERT

Con.Execute "INSERT INTO Prod (CodProd, CodRubro, DescProd, Stock, Lote, FechaRecuento) VALUES ('" & txtCodProd.Text & "', '" & CodRubro & "', '" & DescProd & "', " & Stock & ", '" & Lote & "' ,'" & dtpFechaRecuento & "' ) "

me da el error:

Error de sintaxis al convertir una cadena de caracteres a datetime
-2147217913(80040e07)

ya probe todo pero sigo sin resolver...
la fecha la paso como yyyy-mm-dd y el campo en sql es datetime

ayuda por favor

pedro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error raro en INSERT

Publicado por Cicatriz (4 intervenciones) el 14/03/2006 05:59:10
Con.Execute "INSERT INTO Prod (CodProd, CodRubro, DescProd, Stock, Lote, FechaRecuento) VALUES ('" & txtCodProd.Text & "', '" & CodRubro & "', '" & DescProd & "', " & Stock & ", '" & Lote & "' ,'" & dtpFechaRecuento & "' ) "

si estas empleando un datepicker especifica su propiedad value asi

Con.Execute "INSERT INTO Prod (CodProd, CodRubro, DescProd, Stock, Lote, FechaRecuento) VALUES ('" & txtCodProd.Text & "', '" & CodRubro & "', '" & DescProd & "', " & Stock & ", '" & Lote & "' ,'" & dtpFechaRecuento.value & "' ) "

porque visual basic suele rayarse cuando se usa el nombre del objeto y no se le menciona su propiedad, y mas aun cuando es con base de datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error raro en INSERT

Publicado por joaquin (70 intervenciones) el 15/03/2006 18:44:53
Si queres asegurarte de mandar el formato string correcto al SQL, hay que poner

... ,'" & Format(dtpFechaRecuento,"YYYYMMDD") & "' ) "

caso contrario, enviara la fecha segun el formato regional.
si tenes suerte, anda o salta error,
si no, grabara dia y mes al reves

---

el dtPicker da formato DATE, el campo sql tambien, pero la orden es un string, siempre hay problemas con eso.

Que pasaria si la descripcion fuera: CAÑO DE 8'
Hay que prever eso, transformar la ' o prohibirla

Que pasa si mandas valor en decimal y la configuracion es español?
el vb transforma en 2,3 en lugar de 2.3, el sql lo interpreta como separador de parametros.

Por eso ahora trato de usar recordset, addnew / update, y dejo los select solo para abrir y consultar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error raro en INSERT

Publicado por pedro (155 intervenciones) el 15/03/2006 21:01:41
gracias a ambos x responder.

Despues de dias rompiendome la cabeza, el maldito datapiker a veces no toma bien la fecha si la ingreso de forma manual, pero si se hace a traves del calendario, funciona sin problemas.

Cosas raras de la programacion...
Gracias de nuevo
pedro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error raro en INSERT

Publicado por joaquin (70 intervenciones) el 15/03/2006 22:28:47
Cierto?
No sera alguna otra cosa?
No se puede obligar al usuario a usar el calendario...!

tengo VB6, SP6, y montones de dtpicker en facturas, presupuestos, remitos, recibos, informes, en empresas con 20 usuarios, y nunca tuve ESE error (muchos otros sí),

Si lo paso como parametro a un stored procedure datetime, nunca falla,
Si lo paso a un recordset, (rs!fecha) tampoco,
si armo string con el formato correcto format (dtFecha, 'yyyymmdd' ), tampoco...

revisaste los service pack ?

---

bug?
lo unico que se quejan es que si el mes esta en febrero (facturas predefino el dia), y ponen dia 31/01, el control primero ajusta el dia a 28 y despues pasa al mes, nadie se da cuenta en el momento y pasan las facturas mal, pero no errores de sintaxis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error raro en INSERT

Publicado por pedro (155 intervenciones) el 15/03/2006 23:07:52
joaquin, te agradezco mucho tu ayuda

Te comento que tengo el VB6 con SP6, el XP con SP2 y el SQL 2000 SP4.

Despues de probar una y otra vez, creeria que es ese el drama, porque cuando lo cargo desde el calendario no hay problema, cuando se tipea directamente y le das TAB para salir del dtpicker tambien lo hace bien.

Pero si el usuario, modifica el dtpicker y no sale de el y guarda el registro, entonces a veces el datapicker no toma bien el valor y no se guarda el cambio (aunque sean fechas validas). Como le explicas al usuario que haga TAB? no se si se podra forzar por codigo para que tome el valor correcto?

Voy a seguir probando...

saludos y muchas gracias x tu ayuda
Pedro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error raro en INSERT

Publicado por joaquin (70 intervenciones) el 16/03/2006 16:07:50
estuve jugando un poco y no pude reproducir ese error, asi que no se ayudar.

No se que diferencia puede haber entre dar TAB y que pierda el foco con el mouse...


igual, si el campo es datetime insisto en ponerlo dentro del format, pero ese parece ser otro tema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error raro en INSERT

Publicado por pedro (155 intervenciones) el 16/03/2006 21:46:31
joaquin, gracias x la ayuda.-

Por ahora me funciona bien asi, luego voy a seguir probando y veo si como decis es otra cosa...

Queria aprovechar para consultarte, ya que debo colocar muchos montos en la base de sql. Habia pensado en colocarlos como Money, pero he leido por alli que a veces hay problemas con este tipo de datos en algunos calculos, por lo cual pense hacerlo con decimal (y 2 digitos decimales). Que opinas? es una eleccion acertada?

Como siempre programe en Access, campos como nvarchar me parecen muy interesantes, cuando tenemos un texto que sabemos que puede variar mucho su tamaño. Pero en performance, conviene el nvarchar o directamente el char?

te agradecere mucho tu ayuda
pedro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error raro en INSERT

Publicado por joaquin (70 intervenciones) el 18/03/2006 00:15:49
Deberias abrir una consulta nueva, no me siento seguro de ser el adecuado para responder, solo transmiti mi experiencia.

Me habian dicho de problemas con currency, nunca lo use,
uso flotantes pero sugiero usar siempre 4 decimales
(calculos y grabacion con 4, mostrar 2 al usuario)
porque en ciertas condiciones te puede redondear a 9,99 en vez de 10

sobre la diferencia de rendimiento entre varchar y char, es tambien mi duda,
personalmente uso
char (sin n, limpito) para codigos (calculo hasta unas 10 letras) y campos que pueda llegar a usar en una relacion
y
nvarchar para lo demas (la n ademas es unicode, que el usuario meta los caracteres que se le ocurra)
presumo que habra diferencias en las busquedas, pero supongo que deben ser bases muy grandes para que eso sea perceptible... o muchos usuarios...

y, que hacemos, ponemos la consulta?

salud
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error raro en INSERT

Publicado por pedrok (155 intervenciones) el 20/03/2006 21:33:54
joaquin

gracias x la ayuda. Ahora mismo abro otro post.

saludos amigo
Pedrok
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar