Update en Visual FoxPro para tablas en MySQL

1,945 views
Skip to first unread message

Neithan Macedo

unread,
Dec 7, 2011, 1:39:49 PM12/7/11
to Comunidad de Visual Foxpro en Español
Hola Comunidad...!! fijense que estoy programando en Visual FoxPro 9.0
y tengo mi base de datos en MySQL y quisiera saber si me pueden ayudar
con el boton ACTUALIZAR o MODIFICAR la sintaxis que tengo es esta:
pero no me funciona, algo estoy haciendo mal.. me ayudan por favor!!

atte: Neithan.


DO case
CASE EMPTY(thisform.txtidentidad.Value)
MESSAGEBOX("El campo identidad esta en blanco",48,"Aviso")
thisform.txtidentidad.SetFocus
CASE EMPTY(thisform.txtnombre.Value)
MESSAGEBOX("El Campo Nombre estan en blanco",48,"Aviso")
thisform.txtnombre.SetFocus
CASE EMPTY(thisform.txtdireccion.Value)
MESSAGEBOX("El campo direccion estan en blanco",48,"Aviso")
thisform.txtdireccion.SetFocus
CASE EMPTY(thisform.txttelefono.Value)
MESSAGEBOX("El campo telefono esta en blanco",48,"Aviso")
thisform.txttelefono.SetFocus
CASE EMPTY(thisform.txtsaldo.Value)
MESSAGEBOX("El campo Sueldo X Hora esta en blanco",48,"Aviso")
thisform.txtsaldo.SetFocus
OTHERWISE

SQLEXEC(lnHandle,"update clientes SET
nombre='"+thisform.txtnombre.Value
+"',direccion='"+thisform.txtdireccion.value+"',
telefono='"+thisform.txttelefono.Value
+"',saldo='"+thisform.txtsaldo.Value+"' where
identidad='"+thisform.txtidentidad.Value+"'")

thisform.txtidentidad.SetFocus
thisform.txtidentidad.Init


ENDCASE

carlos SALCEDO

unread,
Dec 7, 2011, 1:45:42 PM12/7/11
to visual fox

Hola

estas usando un sp procedimiento para guardar ?
de lo contrario la cadena donde envias el update
me parece es la que tiene el error

Slds
Carlos


> Date: Wed, 7 Dec 2011 10:39:49 -0800
> Subject: [vfp] Update en Visual FoxPro para tablas en MySQL
> From: neithan...@gmail.com
> To: publice...@googlegroups.com

Neithan Macedo

unread,
Dec 7, 2011, 1:51:57 PM12/7/11
to Comunidad de Visual Foxpro en Español
Mmmmm mira hermano... YO soy nuevo en esto, y la verdad casi no
entiendo donde podria estar el error... podrias ser mas especifico por
favor...!! hay disculpa es que es un proyecto de una clase de Database
II y me urge un poko!!

Pablo Daniel

unread,
Dec 7, 2011, 1:53:41 PM12/7/11
to Comunidad de Visual Foxpro en Español
Hola:

¿Podrías indicar que error te informa?

Como primera medida te diría que revises los tipos de datos. Por
ejemplo: ¿saldo es caracter o numérico? De ser numérico no
necesitarías las comillas simples para encerrar el valor.

Por otro lado, veo que no estás incluyendo una cláusula WHERE, por lo
que tu consulta se ejecutaría sobre todos los registros de tu tabla
clientes. De ser así, si estás modificando alguno de los campos clave,
en el primer registro no tendrías problema, en el segundo tendrías
clave duplicada.

Éxitos.
--------------------------------------------------------------------------------------------------------

carlos SALCEDO

unread,
Dec 7, 2011, 1:56:53 PM12/7/11
to visual fox
Caramba!!!

para intentar ayudarte regalame la estructura de la tabla,
es algo como aparece en la imagen

Slds
Carlos


> Date: Wed, 7 Dec 2011 10:51:57 -0800
> Subject: [vfp] Re: Update en Visual FoxPro para tablas en MySQL
> From: neithan...@gmail.com
> To: publice...@googlegroups.com
>
Sin título3.png

Richard Gaviria

unread,
Dec 7, 2011, 2:00:06 PM12/7/11
to publice...@googlegroups.com
Te debería quedar algo así :

TEXT TO lcSql NOSHOW
update clientes SET nombre=?Thisform.txtnombre.Value,direccion=?Thisform.txtdireccion.value,
telefono=?Thisform.txttelefono.Value,saldo=?Thisform.txtsaldo.Value where identidad=?Thisform.txtidentidad.Value
ENDTEXT

=SQLExec(lnHandle,'START TRANSACTION')
RGL=SqlExec(lnHandle,lcSql)
If RGL>0  Then
=SqlExec(lnHandle,'COMMIT')
Wait Window "¡Operación Realizada Exitosamente!"
Else
=SqlExec(lnHandle,'ROLLBACK')
Wait Window "Ocurrió un Error al Ejecutarse la Transacción"+Chr(13)+"Debe Volver a Ejecutar la Operación"
Endif

Saludos.

Rick




> Date: Wed, 7 Dec 2011 10:39:49 -0800
> Subject: [vfp] Update en Visual FoxPro para tablas en MySQL
> From: neithan...@gmail.com
> To: publice...@googlegroups.com
>

Neithan Macedo

unread,
Dec 7, 2011, 2:03:17 PM12/7/11
to Comunidad de Visual Foxpro en Español
Hola Daniel!! pues mira el Where si esta esta al final del sqlexe,
dice where identidad='"+thisform.txtidentidad.Value+"'")

Y no me informa error, si no que no me actualiza, o no me deja
sobreescribir los datos de una clave primaria, y saldo lo tengo como
VARCHAR porque si le pongo
INTEGER me tira un error... y mejor lo formateo con "" y no tengo
claves repetidas... solo tengo una y es Identidad como clave
primaria.... !! como le hago¿?.

Saludos!!

extremo

unread,
Dec 7, 2011, 2:21:46 PM12/7/11
to Comunidad de Visual Foxpro en Español
Para que te aparezca el verdaero error haz lo siguiente:

cSql = "update clientes SET nombre='"+thisform.txtnombre.Value


+"',direccion='"+thisform.txtdireccion.value+"',
telefono='"+thisform.txttelefono.Value
+"',saldo='"+thisform.txtsaldo.Value+"' where
identidad='"+thisform.txtidentidad.Value+"'"

if SQLEXEC(lnHandle,cSql) < 1
aerr(arr)
messageb(aerr(2),0+64 ,"ERROR...")
endif


Bendiciones

> > Éxitos.- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Soft Power

unread,
Mar 22, 2018, 7:56:57 AM3/22/18
to Comunidad de Visual Foxpro en Español
Mil gracias desde Argentina. Mi codigo ten{ia bien  la lógica pero las sintaxis de los SQL son diferentes 
y luego de horas de prueba, con tu linea quedo perfecto. Yo desarrollo en VFP, solo estoy haciendo
interconexiones con BD mySql en nube para intercambiar datos con webs y apps.
Si de algo puedo serte de ayuda en VFP a tus ordenes

Roberto 
Reply all
Reply to author
Forward
0 new messages