Visual Basic - extraña curiosidad

Life is soft - evento anual de software empresarial
 
Vista:

extraña curiosidad

Publicado por amv (1 intervención) el 07/03/2005 11:11:08
Me pasa un suceso particularmente extraño:

Tengo un textBox donde introduzco el precio de un producto. Y cuando hago un update en el Mysql del nuevo precio, si el precio es distinto al anterior me hace el update correctamente, pero si le vuelvo a poner el mismo precio que tenía, me da error de desbordamiento.

Es decir, consulto el precio de una bobina, y lo pongo en el text box p.e.: \"7\" euros. Si no modifico el precio y pongo \"guardar\" el mysql se hace la picha un lio y me da el error. Ya sé que puedo comprovar antes si el valor es diferente o no, pero me decepciona no poder hacer un update de un campo, sea cual sea su valor, haya cambiado o no.

¿ este es el funcionamiento correcto del ADO de MySQL?
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:extraña curiosidad

Publicado por Nelson Fredericksen (11 intervenciones) el 09/03/2005 20:50:12
Puede ser un error de rutina, puedes enviarme el pedazo de código para analizarlo... ¿Cómo los haces al realziar la modificación, con EDIT o Addnew???
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:extraña curiosidad

Publicado por amv (2 intervenciones) el 10/03/2005 11:00:48
No pongo ni EDIT ni Addnew, porque Edit no me aparece como método asociado al recordset (solo aparece el \"EditMode\"). Y Addnew no, porque no es un registro nuevo, sino una actualización del existente.

En la Base de Datos tengo por ejemplo el precio de un rollo de cable de 20mtrs (8 euros). Tengo un text box para poner el nuevo precio y un botón de guardar.
Si pulso \"guardar\" sin cambiar el valor (\"8\") que tenía antes en la base de datos, al volver a insertar el mismo valor me da el error:

Private Sub btGuardar2_Click()

....

s = \"select codigoArt,precio from producto where codigoArt=\'\" & cod & \"\' ;\"

Screen.MousePointer = vbHourglass
Set r2 = New ADODB.Recordset
r2.CursorLocation = adUseClient
r2.Open s, cn, adOpenKeyset, adLockOptimistic
Screen.MousePointer = vbNormal

If Not r2.EOF Then
r2(\"precio\")=cdbl(precio.text) \' antes tenia 8 y vuelvo a escribir 8
r2.Update
end if

r2.Close
Set r2 = Nothing

...

--> Si pongo un valor distinto funciona bien el update, si es el mismo no.
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

buenoooooooo

Publicado por amv (2 intervenciones) el 10/03/2005 11:46:24
De pura casualidad, he entrado en el "administrador de orígenes de datos ODBC" y en la conexion Mysql he activado los check box en "Advanced --> Flags1" de RETURN MATCHING ROWS y CHANGE BIGINT COLUMNS TO INT.

Y (no se si será suerte temporal) pero ahora me funciona correctamente.

No confio en tener la misma potra otras veces. Gracias igualmente Nelson por tu dedicación.
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:buenoooooooo

Publicado por Ayudante (349 intervenciones) el 11/03/2005 15:42:46
Existe la opción de usar directamente el ODBC de MySQL, en este caso habría que ver si pasa el mismo error, pero al menos he notado que si actualizo un valor un el mismo anterior, lo único que tira es que 0 registros se actualizaron.

Si quieres ver formas de conexión con el mismo driver puedes consultar:
http://www.able-consulting.com
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