FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Actualizaciones de Campos en un ADOQuery!!
Buenas Tardes (desde México) a To2:
Soy totalmente nuevo en desarrollo de Delphi, pero creo que ya le tome el suficiente cariño. Estoy haciendo un aplicacion para actualizaciones en un BD de Access (97) y Delphi 7. Quisiera saber si:¿Mi codigo es Correcto?, (al compilarlo no marca ningun error), o si las operaciones que intento hacer a nivel de registros ¿Son Correctas?, Todo mi codigo avanza aparentemente bien, pero no observo ningun cambio en la BD , Anexo parte de mi codigo, ojala y alguien puede auxiliarme. Gracias QKardex,QActualiza, QInsertados: son objetos TADOQuery en mi Form.
SALUDOS. Oswaldo Jr |
#2
|
||||
|
||||
creo que tienes 3 campos en la instrucción intert y dos campos en Values, a menos que cliente tenga los dos valores, pero no creo que sea correcto
__________________
|
#3
|
|||
|
|||
Gracias por la observacion, es muy cierto el codigo correcto debe ser:
Quizas no formule bien mi pregunta, lo que quiero saber si mi sintaxis es correcta, es decir; si hacer operaciones con los campos de esta forma: FieldValues['Pagada']:=-1; FieldValues['PagadaE']:=-1; ahora cuando llega la ejecucion hasta aqui:
Me envia un error de : "Could No Convert Variant of type (String) into type (Currency)" |
#4
|
||||
|
||||
Cita:
Prueba con ésta función StrtoCurr Saludos. Aarón. |
#5
|
||||
|
||||
Mientras coloques la instrucción Edit antes de Fieldvalues['x']:=12 es correcto. solo no olvides colocar un update o cancel al final.
Cuando utilizas FieldValues['campo'] te lo va a regresar como tipo variant, pero en este caso como lo estas utilizando para formar una cadena, te lo manda como cadena. Entonces tienes que convertir FieldValues['Importe'] a tipo currency. Puede ser: Fields[(número de campo)].ascurrency o utilizar la función strtocurr
__________________
|
#6
|
|||
|
|||
No se Actualizan los campos...
Aqui de nuevo....Gracias por las respuestas me han sido de muchisima ayuda, ya existe ningun error al compilar...pero ahora me surge otro problema
cuando ejecuto el programa al llegar a esta parte...(donde FieldValues['Pagada']:=true; FieldValues['PagadaE']:=true;...) ..
No sucede nada en la tabla afectada, despues de hacer el Update...¿Alguien podria decirme cual es el problema? los campos Pagada, Parcial, ParcialE, PAgadaE son de tipo Si/No, ya intente colocando los valores 0 y -1, pero tampoco se actualizan...Por sus comentarios Gracias |
#7
|
||||
|
||||
Verifica que QKardex te devuelva registros, parece ser que cuando abres QKardex no obtiene ningún resultado y por eso no realiza ningúna acción. Revisa la sentencia SQL de QKardex y que esta te regrese registros.
__________________
|
#8
|
|||
|
|||
Si QKardex si me arroja datos...de hecho antes de que entre a realizar el proceso con los registros tengo esto despues de abrir la consulta...
No entiendo cual pueda ser el problema pues hice esto para probar.. y me arroja el valos que se asigno dos lineas arriba...¿Existe alguna otra cosa que deba revisar??? o ¿Deberia revisar algo mas??, tengo otros ADOQuery donde uso por ejemplo actualizacion o eliminacion y esos si surten efecto sobre la tabla afectada. Gracias de nuevo |
#9
|
|||
|
|||
Debo Cambiar de Componente???
Hola de nuevo a todos, aun sigo sin poder resolver el problema de la actualizacion de los campos .... he buscado en los foros si ya existe una consulta similar sin tener exito, ahora no se si lo que pasa es que ¿utilize el componente incorrecto?, ¿deberia cambiar el componente?..por un ADODataSet...si es asi alguien me pude explicar como debo usarlo. Gracias
|
#10
|
||||
|
||||
en la parte del showmessage es correcto ¿cierto?
¿pero no se reflejan los cambios? si en el showmessage es correcto, entonces los cambios ya deberían estar hechos. ¿No te hará falta hacer un refresh en donde revisas si se hicieron los cambios?
__________________
|
#11
|
|||
|
|||
Abro directamente la BD
Efectivamente los cambios ya deberian estar hechos.
Para revisar he abierto despues de que termina mi aplicacion, la BD, y consultado directamente las tablas, y solo las tablas que afecte haciendo un UPDATE o DELETE, son las que registraron los cambios, en las tablas donde utilize modificaciones a traves del ADOQuery....Edit.....Update... no pasó absolutamente nada. coloco de nuevo el codigo (espero no se torne muy tedioso) y agradezco la atencion prestada y los comentarios que me puedan hacer al respecto. Saludos
|
#12
|
||||
|
||||
Cambia la instrucción Update por Post
__________________
|
#13
|
|||
|
|||
Es muy raro???
Ya realize el cambio que me sugeriste. y sigue sin surtir efecto.
¿Que estaré hacindo mal?.. La BD la abro de la sig forma:
la Propiedad en diseño: Mode esta en cmShareDenyNone, o sera un problema con el componente??? o con el ADO??..pero esto :
Si funciona las tablas son afectadas.... |
#14
|
||||
|
||||
Pues si que esta bastante raro.
me he quedado sin ideas.
__________________
|
#15
|
|||
|
|||
Alguna otra sugerencia...
Gracias ContraVeneno por tomarte la molestia de contestar
y agradezco tus comentarios. Gracias. Alguien más podria escribir algun comentario???? por favor.... |
#16
|
|||
|
|||
Alguna forma diferente de operar los registros???
Saludos a todos..
pues se daran cuenta que sigo aun con el mismo problema. Ya no se que es lo que pasa con mi aplicacion..de cierta forma estoy desesperado. Ahora bien, estuve pensando si es la forma de referirme a los registros, pero como soy un novato en estos asuntos, ¿Alguien me puede decir si los puedo modificar de alguna otra forma?, es decir no haciendolo asi:
|
#17
|
||||
|
||||
podrías usar Fields[X] x= número de campo.
__________________
|
#18
|
|||
|
|||
Aun tengo esperanzas...
Gracias por responder, ya lo intente haciendolo de la forma que dices..
pero no funciona Ahora..de tanto estar cambiando codigo, observe que : esto es tratado como strings, ahora alguien puede decirme, si esto me devuelve: ImporteE=30.5 Aplicar=30 1.- 30.530 (concatenado) ó 2.- 60.50 (suma) esto ultimo es lo que pretendo...agradezco de nuevo y disculpen la molestia. |
#19
|
||||
|
||||
para asegurarte e que te lo sume puedes usar Fields[X].asfloat + Fields[X].asfloat
o utilizar strtofloat() tengo entendido que cuando utilizas fieldValues[] toma el valor tipo variant y luego automáticamente lo convierte al tipo e dato que el compilador supone se va a utilizar. Entonces en toería debería sumarlos como float, pero para estar seguros despues del post pon un showmessage(fieldvalues['importeE']); para que veas como te lo guardo.
__________________
Última edición por ContraVeneno fecha: 21-07-2005 a las 19:51:47. |
#20
|
|||
|
|||
Magia?, Error de Programacion?? o Capricho de Delphi?
Gracias por responder.
Y les tengo una noticia, la aplicacion ya corre y muy bien. ¿Que le hice? En si Nada, practicamente nada, el codigo quedo tal y como esta en unos de los mensajes aqui publicados. Despues de estar intentando durante varias semanas, y seguir los consejos que me brindaron, este dia comenze a correr la aplicacion limitandola a unas condiciones especiales en mi seleccion del cliente y ohhh!!! los registros se actualizaron tal y como pretendia que se hiciera. No se exactamente cual era el problema, pues como comento no realize modificaciones extras. Nuevamente, agradezco a todos. |
|
|
|