Sentencias SQL

24/02/2005 - 14:17 por Luis A. Uriarte | Informe spam
Hola Grupo
Estoy usando sentencias SQL en lugar de las basicas de fox como APPEND
BLANK, REPLACE, etc.
Uso dos combobox, uno filtra al otro.
ComboBox1: RowSourceType = 3
RowSource=SELECT detalle,id_poder FROM poder ORDER BY detalle INTO CURSOR
cpoder
En el InteractiveChange del Combobox1 tengo:
lcSql="SELECT secretarias.detalle, secretarias.id_secre;
FROM secretarias;
WHERE secretarias.id_poder = cpoder.id_poder;
ORDER BY secretarias.detalle;
INTO CURSOR csecretarias"
WITH ThisForm
.cboComboBox2.RowSourceType = 3
.cboComboBox2.RowSource = lcSql
ENDWITH

Tengo este codigo en el evento click de mi boton Aceptar:

lcIdSec=ThisForm.cboComboBox2.Value
lcIdPoder=ThisForm.cboComboBox1.Value
lcDetalle=ThisForm.txtDetalle.Value
opc=messagebox("¿ Confirma MODIFICACIONES ?",36,"Informacion")
SELECT secretarias
IF opc=6 && Modifica Tabla
=CURSORSETPROP("BUFFERING",5,"secretarias")
IF pcAccion="Alta"
INSERT INTO secretarias (id_secre, id_poder, detalle);
VALUES (lcIdSec, lcIdPoder, lcDetalle)
MESSAGEBOX("Alta Completada...",48,"Info")
ELSE
UPDATE secretarias SET detalle=lcDetalle;
WHERE id_secre=lcId_sec AND id_poder=lcIdPoder
MESSAGEBOX("Datos Actualizados...",48,"Info")
ENDIF
=TABLEUPDATE(.T.,.T.,"secretarias")
ELSE && NO Grabo los cambios
=TABLEREVERT(.T.,"secretarias")
ENDIF
ThisForm.Refresh
ThisForm.init

El formulario esta en Buffermode=1, en el entorno de datos tengo los
cursores en BufferModeOverride=5
Cuando modifico Detalle y doy click en aceptar me modifica el registro, pero
ademas me agrega un registro igual.
Como hago para que no me agregue el registro de mas?
Alguna sugerencia?..
Gracias y perdon por lo extenso del post
Luis A. Uriarte
luisuriarte@speedy.com.ar
Centro de Cómputos
Municipalidad de Río Grande
http://www.riogrande.gov.ar
Tierra del Fuego
 

Leer las respuestas

#1 Luis A. Uriarte
24/02/2005 - 15:27 | Informe spam
Otra vez Yo...
Perdon me equivoque el codifo del evento click del boton Aceptar:
lcIdSec=ThisForm.cboSecretaria.Value
lcIdPoder=ThisForm.cboPoder.Value
lcDetalle=ThisForm.txtDetalle.Value
opc=messagebox("¿ Confirma MODIFICACIONES ?",36,"Informacion")
SELECT secretarias
=CURSORSETPROP("BUFFERING",5,"secretarias")
IF opc=6 && Modifica Tabla
IF pcAccion="Alta"
INSERT INTO secretarias (id_secre, id_poder, detalle);
VALUES (lcIdSec, lcIdPoder, lcDetalle)
MESSAGEBOX("Alta Completada...",48,"Info")
ELSE
UPDATE secretarias SET detalle=lcDetalle;
WHERE id_secre=csecretarias.id_secre AND id_poder=cpoder.id_poder
MESSAGEBOX("Datos Actualizados...",48,"Info")
ENDIF
=TABLEUPDATE(.T.,.T.,"secretarias")
ELSE && NO Grabo los cambios
=TABLEREVERT(.T.,"secretarias")
ENDIF
ThisForm.Refresh
ThisForm.init


Luis A. Uriarte

Centro de Cómputos
Municipalidad de Río Grande
http://www.riogrande.gov.ar
Tierra del Fuego
"Luis A. Uriarte" escribió en el mensaje
news:
Hola Grupo
Estoy usando sentencias SQL en lugar de las basicas de fox como APPEND
BLANK, REPLACE, etc.
Uso dos combobox, uno filtra al otro.
ComboBox1: RowSourceType = 3
RowSource=SELECT detalle,id_poder FROM poder ORDER BY detalle INTO CURSOR
cpoder
En el InteractiveChange del Combobox1 tengo:
lcSql="SELECT secretarias.detalle, secretarias.id_secre;
FROM secretarias;
WHERE secretarias.id_poder = cpoder.id_poder;
ORDER BY secretarias.detalle;
INTO CURSOR csecretarias"
WITH ThisForm
.cboComboBox2.RowSourceType = 3
.cboComboBox2.RowSource = lcSql
ENDWITH

Tengo este codigo en el evento click de mi boton Aceptar:

lcIdSec=ThisForm.cboComboBox2.Value
lcIdPoder=ThisForm.cboComboBox1.Value
lcDetalle=ThisForm.txtDetalle.Value
opc=messagebox("¿ Confirma MODIFICACIONES ?",36,"Informacion")
SELECT secretarias
IF opc=6 && Modifica Tabla
=CURSORSETPROP("BUFFERING",5,"secretarias")
IF pcAccion="Alta"
INSERT INTO secretarias (id_secre, id_poder, detalle);
VALUES (lcIdSec, lcIdPoder, lcDetalle)
MESSAGEBOX("Alta Completada...",48,"Info")
ELSE
UPDATE secretarias SET detalle=lcDetalle;
WHERE id_secre=lcId_sec AND id_poder=lcIdPoder
MESSAGEBOX("Datos Actualizados...",48,"Info")
ENDIF
=TABLEUPDATE(.T.,.T.,"secretarias")
ELSE && NO Grabo los cambios
=TABLEREVERT(.T.,"secretarias")
ENDIF
ThisForm.Refresh
ThisForm.init

El formulario esta en Buffermode=1, en el entorno de datos tengo los
cursores en BufferModeOverride=5
Cuando modifico Detalle y doy click en aceptar me modifica el registro,
pero ademas me agrega un registro igual.
Como hago para que no me agregue el registro de mas?
Alguna sugerencia?..
Gracias y perdon por lo extenso del post
Luis A. Uriarte

Centro de Cómputos
Municipalidad de Río Grande
http://www.riogrande.gov.ar
Tierra del Fuego

Preguntas similares