FoxPro/Visual FoxPro - ayuda con duplicado (es_binario)

 
Vista:

ayuda con duplicado (es_binario)

Publicado por programadora (53 intervenciones) el 21/01/2010 21:35:10
hola es_binario y chicos de la red, tengo ahora un problema, utilizo el codigo que enviaste es_binario pero ahora resulta que al momento de mandar a imprimir, se duplica el registro en mi base de datos que hago? y aparte se sobre escribe con el otro registro y me lo imprime doble que puedo hacer??? de ante mano gracias
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:ayuda con duplicado (es_binario)

Publicado por luishoracio (93 intervenciones) el 21/01/2010 23:41:26
Buenas tardes,

Lo que puedes hacer es una consulta de duplicados así

select <campo>,count(<campo>) as veces from <tabla> group by <campo>
having count(<campo>) >1

Para que no se te duplique crea un indice que se componga digamos del documento y el campo es_binario

Saludos!
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:ayuda con duplicado (es_binario)

Publicado por es_binario (757 intervenciones) el 22/01/2010 14:50:58
Tendria que ver un poco en la forma en que guardas tu informacion es decir en el boton guardar, se supone que no quieres registros duplicados digamos que con una clave que se llame folio, en el codigo que te mande en caso de que el programa encuentre al folio registrado entonces manda un mensage y de paso pone en el TextBoxFolio el valor 0, Bueno ahora en tu boton guardar debes de tener una opcion que evite que se registres folios con 0 o folios existentes

Este codigo tambien es de uno de mis programas donde utilizo un folio para registrar una venta

STORE thisformset.form1.txtfolio.Value TO folio_
*// ver si el folio existe
SELECT folio FROM venta WHERE venta.folio == folio_;
INTO CURSOR Existe_venta_cur
SELECT Existe_venta_cur
IF RECCOUNT() > 0 && existe la venta
MESSAGEBOX("El numero de folio ya se encuentra registrador verifique la informacion", 48, "Folio Existe")
RETURN && no continua con el registro de la venta
ENDIF

Este codigo esta en un boton que se llama guardar venta, pero siempre tienes que evitar guardar la venta, necesitarias observar que en el boton guardar evite ques e dupliquen los folios

dime como es que guardas tus dados en tu base de datos, y si ya has registrado datos duplicados entocnes como dice Luis horacio hay que sacarlos con un group by y eliminar los duplicados.

Saludos tambien desde Mexico
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:ayuda con duplicado (es_binario)

Publicado por programadora (37 intervenciones) el 22/01/2010 16:49:19
hola es_binario en realidad no tengo boton de guardar, lo hago cuando imprimo y en el boton de imprimir tengo el siguiente codigo y es ahi donde me duplica y me sobreescribe los campos que puedo hacer?


* IMPRESION DEL RECIBO

cMessageTitle = 'Imprimir Recibo'
cMessageText = '¿Deseas Imprimir el Recibo?'
nDialogType = 4 + 32 + 256
* 4 = Botones Si y No
* 32 = Icono Interrogación
* 256 = Segundo botón como predeterminado
nAnswer = MESSAGEBOX(cMessageText, nDialogType, cMessageTitle)

DO CASE
CASE nAnswer = 6
WAIT WINDOW 'Eligió Si'
close tables

use "C:\SIMA\DATOS\recibos.dbf" EXCLUSIVE
PACK

GO bottom
APPEND BLANK

replace recibo with THISFORM.TXTRECIBO.VALUE
replace nombreCont with THISFORM.TXTNOMBRECONT.VALUE
replace domicilio with THISFORM.TXTDOMICILIO.VALUE

replace f_poliza with THISFORM.TXTF_POLIZA.VALUE
replace fecha with THISFORM.TXTFECHA.VALUE

replace n_cuenta1 with THISFORM.combo1.VALUE
replace nom_cta1 WITH THISFORM.NOM1.VALUE
replace habono1 with THISFORM.IMPORTE1.VALUE
replace cantidad1 with THISFORM.CAN1.VALUE
replace importe1 WITH THISFORM.TOT1.VALUE

replace n_cuenta2 with THISFORM.combo2.VALUE
replace nom_cta2 WITH THISFORM.NOM2.VALUE
replace habono2 with THISFORM.IMPORTE2.VALUE
replace cantidad2 with THISFORM.CAN2.VALUE
replace importe2 WITH THISFORM.TOT2.VALUE

replace n_cuenta3 with THISFORM.combo3.VALUE
replace nom_cta3 WITH THISFORM.NOM3.VALUE
replace habono3 with THISFORM.IMPORTE3.VALUE
replace cantidad3 with THISFORM.CAN3.VALUE
replace importe3 WITH THISFORM.TOT3.VALUE

replace n_cuenta4 with THISFORM.combo4.VALUE
replace nom_cta4 WITH THISFORM.NOM4.VALUE
replace habono4 with THISFORM.IMPORTE4.VALUE
replace cantidad4 with THISFORM.CAN4.VALUE
replace importe4 WITH THISFORM.TOT4.VALUE

replace n_cuenta5 with THISFORM.combo5.VALUE
replace nom_cta5 WITH THISFORM.NOM5.VALUE
replace habono5 with THISFORM.IMPORTE5.VALUE
replace cantidad5 with THISFORM.CAN5.VALUE
replace importe5 WITH THISFORM.TOT5.VALUE

replace concepto WITH THISFORM.TXTCONCEPTO.VALUE
replace concepto2 WITH THISFORM.TXTCONCEPTO2.VALUE
replace concepto3 WITH THISFORM.TXTCONCEPTO3.VALUE
replace concepto4 WITH THISFORM.TXTCONCEPTO4.VALUE

replace subtotal with THISFORM.SUBTOTAL.VALUE
replace recargos with THISFORM.RECARGOS.VALUE
replace gastos with THISFORM.GASTOS.VALUE
replace total with THISFORM.TOTAL.VALUE


SET PRINTER ON
REPORT FORM c:\SIMA\REPORTES\recibo.frx FOR recibo=thisform.txtrecibo.value TO PRINTER NOEJECT NOCONSOLE

Clear

CASE nAnswer = 7
*WAIT WINDOW 'Eligió No'
MESSAGEBOX("RECIBO CAPTURADO",0)

ENDCASE

STORE 0 TO thisform.txtrecibo.Value
store SPACE(30) to thisform.txtnombrecont.value
STORE SPACE(30) TO thisform.txtDomicilio.value
STORE date() TO thisform.txtF_poliza.value
STORE 0 TO thisform.importe1.value
STORE 0 to thisform.importe2.value
STORE 0 TO thisform.importe3.value
STORE 0 TO thisform.importe4.Value
STORE 0 TO thisform.importe5.value
STORE 0 TO thisform.caN1.Value
STORE 0 TO thisform.CAN2.Value
STORE 0 TO thisform.CAN3.Value
STORE 0 TO thisform.CAN4.value
STORE 0 TO thisform.CAN5.Value
STORE space(46) TO thisform.TxtConcepto.Value
STORE space(46) TO thisform.txtconcepto2.Value
STORE space(46) TO thisform.txtconcepto3.Value
STORE space(46) TO thisform.txtconcepto4.Value
STORE 0 TO reCARGOS
STORE 0 TO gASTOS
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:ayuda con duplicado (es_binario)

Publicado por es_binario (757 intervenciones) el 22/01/2010 17:33:01
Cambialo por esto

* IMPRESION DEL RECIBO

cMessageTitle = 'Imprimir Recibo'
cMessageText = '¿Deseas Imprimir el Recibo?'
nDialogType = 4 + 32 + 256
* 4 = Botones Si y No
* 32 = Icono Interrogación
* 256 = Segundo botón como predeterminado
nAnswer = MESSAGEBOX(cMessageText, nDialogType, cMessageTitle)

DO CASE
CASE nAnswer = 6
WAIT WINDOW 'Eligió Si'
close tables

use "C:\SIMA\DATOS\recibos.dbf" EXCLUSIVE
PACK

*// antes de imprimir verifico que no exista ya el recibo -------------------
SELECT recibo FROM recibos WHERE recibos.recibo == THISFORM.TXTRECIBO.VALUE;
INTO CURSOR cur_ver_si_existe
SELECT cur_ver_si_existe
IF RECCOUNT() > 0 && existe un recibo igual
MESSAGEBOX("El Recibo ya se encuentra capturado e impreso intente con uno nuevo",64,"Recibo duplicado")
RETURN && con este return salgo de la rutina y no guardo ni imprimo recibo alguno
ENDIF

GO bottom
APPEND BLANK

replace recibo with THISFORM.TXTRECIBO.VALUE
replace nombreCont with THISFORM.TXTNOMBRECONT.VALUE
replace domicilio with THISFORM.TXTDOMICILIO.VALUE

replace f_poliza with THISFORM.TXTF_POLIZA.VALUE
replace fecha with THISFORM.TXTFECHA.VALUE

replace n_cuenta1 with THISFORM.combo1.VALUE
replace nom_cta1 WITH THISFORM.NOM1.VALUE
replace habono1 with THISFORM.IMPORTE1.VALUE
replace cantidad1 with THISFORM.CAN1.VALUE
replace importe1 WITH THISFORM.TOT1.VALUE

replace n_cuenta2 with THISFORM.combo2.VALUE
replace nom_cta2 WITH THISFORM.NOM2.VALUE
replace habono2 with THISFORM.IMPORTE2.VALUE
replace cantidad2 with THISFORM.CAN2.VALUE
replace importe2 WITH THISFORM.TOT2.VALUE

replace n_cuenta3 with THISFORM.combo3.VALUE
replace nom_cta3 WITH THISFORM.NOM3.VALUE
replace habono3 with THISFORM.IMPORTE3.VALUE
replace cantidad3 with THISFORM.CAN3.VALUE
replace importe3 WITH THISFORM.TOT3.VALUE

replace n_cuenta4 with THISFORM.combo4.VALUE
replace nom_cta4 WITH THISFORM.NOM4.VALUE
replace habono4 with THISFORM.IMPORTE4.VALUE
replace cantidad4 with THISFORM.CAN4.VALUE
replace importe4 WITH THISFORM.TOT4.VALUE

replace n_cuenta5 with THISFORM.combo5.VALUE
replace nom_cta5 WITH THISFORM.NOM5.VALUE
replace habono5 with THISFORM.IMPORTE5.VALUE
replace cantidad5 with THISFORM.CAN5.VALUE
replace importe5 WITH THISFORM.TOT5.VALUE

replace concepto WITH THISFORM.TXTCONCEPTO.VALUE
replace concepto2 WITH THISFORM.TXTCONCEPTO2.VALUE
replace concepto3 WITH THISFORM.TXTCONCEPTO3.VALUE
replace concepto4 WITH THISFORM.TXTCONCEPTO4.VALUE

replace subtotal with THISFORM.SUBTOTAL.VALUE
replace recargos with THISFORM.RECARGOS.VALUE
replace gastos with THISFORM.GASTOS.VALUE
replace total with THISFORM.TOTAL.VALUE

SET PRINTER ON
REPORT FORM c:\SIMA\REPORTES\recibo.frx FOR recibo=thisform.txtrecibo.value TO PRINTER NOEJECT NOCONSOLE

Clear

CASE nAnswer = 7
*WAIT WINDOW 'Eligió No'
MESSAGEBOX("RECIBO CAPTURADO",0)

ENDCASE

STORE 0 TO thisform.txtrecibo.Value
store SPACE(30) to thisform.txtnombrecont.value
STORE SPACE(30) TO thisform.txtDomicilio.value
STORE date() TO thisform.txtF_poliza.value
STORE 0 TO thisform.importe1.value
STORE 0 to thisform.importe2.value
STORE 0 TO thisform.importe3.value
STORE 0 TO thisform.importe4.Value
STORE 0 TO thisform.importe5.value
STORE 0 TO thisform.caN1.Value
STORE 0 TO thisform.CAN2.Value
STORE 0 TO thisform.CAN3.Value
STORE 0 TO thisform.CAN4.value
STORE 0 TO thisform.CAN5.Value
STORE space(46) TO thisform.TxtConcepto.Value
STORE space(46) TO thisform.txtconcepto2.Value
STORE space(46) TO thisform.txtconcepto3.Value
STORE space(46) TO thisform.txtconcepto4.Value
STORE 0 TO reCARGOS
STORE 0 TO gASTOS
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:ayuda con duplicado (es_binario)

Publicado por programadora (53 intervenciones) el 22/01/2010 18:44:29
hola, cambie el codigo, pero como tambien tengo el anterior que me pasaste, osea el primero lo tengo en el valid del txtrecibo y el segundo en el boton imprimir, pero cualquier numero que ponga me dice que ya fue impreso que mas puedo hacer???? gracias....
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:ayuda con duplicado (es_binario)

Publicado por es_binario (757 intervenciones) el 22/01/2010 21:39:25
Podrias hacer que te lo genere automaticamente, ya sea en el valid o en el boton imprimir, pero esto significaria, que solo puedes imprimir los recibos cuando los generas por primera vez seria algo asi

*// en esta funcion se supone que tienes en la tabla recibos creado como indice el campo recibo

LOCAL mi_nuevo_recibo
SELECT recibos
SET ORDER TO recibo
GO bottom
STORE recibos.recibo + to mi_nuevo_recibo

Thisform.TxtRecibo.value = to mi_nuevo_recibo && o como se llame tu txt con el dato recibo

pero si ya tines ingresados recibos y lo que deseas es consultarlos deberias usar ya sea un cursor o una vistra parametrizada para acceder a su reimpresion

con la funcion anterior garantizas que siemrpe sea un nuevo recibo
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