Raro error en tDolphin

Post Reply
caducca
Posts: 106
Joined: Wed Mar 08, 2006 2:24 pm

Raro error en tDolphin

Post by caducca »

Hola Foro, tengo un error que me esta volviendo loco.
Cuando ejecuto el Sistema en una máquina que tiene Windows 10 con el MySql instalado con la aplicación XAMPP no me arroja error, pero cuando lo ejecuto en un Servidor que tiene Windows Server 2008 me arroja el error de clave duplicada.
A continuación pongo el código:

Code: Select all

PROCEDURE EditDeu(lAppend)

   Local vCod:=0, lSave:=.F., oCDeu, oLoca, oProvi, oCodPos, oTele
   Public cNomDeu :=Space(30), nNumDoc :=0

   If lAppend
      oQryDeu:GetBlankRow(.F.)
    Else
      oQryDeu:GetRow()
   EndIf

   DEFINE DIALOG UDlgE RESOURCE "DATOSDEUDOR" ;
      TITLE If( lAppend, "AGREGAR DEUDOR", "MODIFICAR DEUDOR" )

   REDEFINE SAY oCDeu VAR oQryDeu:Codigo  ID 21 OF UDlgE

   REDEFINE DBCOMBO oTipoDoc VAR oQryDeu:TipoDoc ID 22 OF UDlgE ;
                ALIAS oQryDocu ITEMFIELD "coddocu" LISTFIELD "nomdocu" ;
                UPDATE

   REDEFINE GET oQryDeu:NroDoc   ID 23 OF UDlgE picture '999,999,999'

   REDEFINE DBCOMBO oTipoIva  VAR oQryDeu:t_cuit ID 4003 OF UDlgE ;
                ALIAS oQryIva ITEMFIELD "codiva" LISTFIELD "nomiva" ;
                UPDATE

   REDEFINE GET oQryDeu:n_cuit   ID 4005 OF UDlgE picture '99-99999999-9'

   REDEFINE DBCOMBO oTipoCiv VAR oQryDeu:esta_civil ID 4006 OF UDlgE ;
                ALIAS oQryCivil ITEMFIELD "codcivil" LISTFIELD "nomcivil" ;
                UPDATE

   REDEFINE GET oQryDeu:Nombres  ID 32 OF UDlgE picture '@!' //;
//                                   VALID BusNom(lAppend,oQryDeu:Nombres,oQryDeu:NroDoc)
   REDEFINE GET oQryDeu:Direc    ID 25 OF UDlgE picture '@!'

   REDEFINE DBCOMBO oBarru VAR oQryDeu:CodBarr ID 26 OF UDlgE ;
            ALIAS oQryBarr ITEMFIELD "ccodigo" LISTFIELD "nombre" ;
            ON CHANGE (ActuBarrio(3,oQryDeu:CodBarr), oLoca:Refresh(), oProvi:Refresh(), oCodPos:Refresh()) ;
            UPDATE

   REDEFINE GET oLoca   VAR  oQryDeu:Locali   ID 27 OF UDlgE picture '@!'
   REDEFINE GET oProvi  VAR  oQryDeu:Provi    ID 28 OF UDlgE picture '@!'
   REDEFINE GET oCodPos VAR  oQryDeu:CodPos   ID 30 OF UDlgE
   REDEFINE GET oTele   VAR  oQryDeu:Telefono ID 31 OF UDlgE

   REDEFINE GET oQryDeu:Trabaja  ID 36 OF UDlgE
   REDEFINE GET oQryDeu:Ocupa    ID 34 OF UDlgE
   REDEFINE GET oQryDeu:Ult_Act  ID 33 OF UDlgE
   REDEFINE GET oQryDeu:Obser    ID 35 OF UDlgE
   REDEFINE GET oQryDeu:email    ID 4002 OF UDlgE

   REDEFINE BTNBMP oBtnA ID 250 OF UDlgE MESSAGE "Graba el Deudor..." ;
        FILE "./BmpN/Grabar_24.PNG" PROMPT "Grabar" LEFT ;
            ACTION (MsgAlert(oQryDeu:Nombres),lSave:=.T., UDlgE:End());

   REDEFINE BTNBMP oBtnC ID 240 OF UDlgE MESSAGE "Cancela el Movimiento..." ;
        FILE "./BmpN/Cancelar.bmp" PROMPT "Cancelar" LEFT ;
               ACTION UDlgE:End()

   ACTIVATE DIALOG UDlgE CENTERED

   MsgAlert(oQryDeu:Nombres)

   If lAppend
      If !lCargaDeu
         MsgAlert("Usuario no Autorizado para cargar Deudores...!")
         lSave:=.F.
      EndIf
     Else
      If !lModiDeu
         MsgAlert("Usuario no Autorizado para Modificar Deudores...!")
         lSave:=.F.
      EndIf
   EndIf
   If lSave
     If lAppend
         oQryDeu:lAppend := .T.
      EndIf
      oQryDeu:Save()
      oQryDeu:Refresh()
   EndIf
Return Nil
 
Puse dos MsgAlert para ver la secuencia y en el primero me muestra El nombre de quien quiero dar de alta pero en el segundo me muestra el nombre del primer registro de la tabla, es como que cuando saliera del dialogo se ubicara al comienzo de la tabla.

Lo mas extraño es que con otras tablas funciona bien, por ejemplo el siguiente código

Code: Select all

PROCEDURE EditEsta(lAppend)

   Local oEstaDi, oEstaPa, oEstaVi, lSave:=.F.

   oQryE2 := oServer:Query( "SELECT codigo, descrip FROM estados ORDER BY codigo ASC" )

   DEFINE FONT oFont30  NAME "Times New Roman" SIZE 0,-30 BOLD
   DEFINE FONT oFont20  NAME "Times New Roman" SIZE 0,-20 BOLD
   DEFINE FONT oFont14  NAME "Times New Roman" SIZE 0,-14 BOLD

   If lAppend
      oQryEsta:GetBlankRow(.F.)
    Else
      oQryEsta:GetRow()
   EndIf

   DEFINE DIALOG UDlgE RESOURCE "DATOSESTA" ;
      TITLE If( lAppend, "AGREGAR ESTADO", "MODIFICAR ESTADO" )

   REDEFINE GET oQryEsta:Codigo    ID 100 OF UDlgE picture '999' COLOR "N/W" FONT oFont20
   REDEFINE GET oQryEsta:Descrip   ID 101 OF UDlgE picture '@!'  COLOR "N/W" FONT oFont20
   REDEFINE RADIO oTipoEsta VAR oQryEsta:TEstado  ID 102, 103 OF UDlgE

   REDEFINE GET oQryEsta:Dia_Movi  ID 104 OF UDlgE picture '999'

   REDEFINE DBCOMBO oEstaDi  VAR oQryEsta:Codigo_D  ID 105 OF UDlgE ;
          ALIAS oQryE2 ITEMFIELD "codigo" LISTFIELD "descrip"

   REDEFINE DBCOMBO oEstaPa  VAR oQryEsta:Codigo_P ID 106 OF UDlgE ;
          ALIAS oQryE2 ITEMFIELD "codigo" LISTFIELD "descrip"

   REDEFINE DBCOMBO oEstaVi  VAR oQryEsta:Codigo_V ID 107 OF UDlgE ;
          ALIAS oQryE2 ITEMFIELD "codigo" LISTFIELD "descrip"

   REDEFINE BTNBMP oBtnA ID 250 OF UDlgE MESSAGE "Graba el Deudor..." ;
        FILE "./BmpN/Grabar_24.PNG" PROMPT "Grabar" LEFT ;
            ACTION (lSave:=.T., UDlgE:End());

   REDEFINE BTNBMP oBtnC ID 240 OF UDlgE MESSAGE "Cancela el Movimiento..." ;
        FILE "./BmpN/Cancelar.bmp" PROMPT "Cancelar" LEFT ;
               ACTION UDlgE:End()

   ACTIVATE DIALOG UDlgE CENTERED

   If lSave
     If lAppend
         oQryEsta:lAppend := .T.
      EndIf
      oQryEsta:Save()
      oQryEsta:Refresh()
   EndIf

   oQryE2:End()
   oFont30:End()
   oFont20:End()
   oFont14:End()

Return Nil
funciona bien, muy raro el error....
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Raro error en tDolphin

Post by cmsoft »

En el primer ejemplo oQryDeu no existe en el modulo, imagino que debe ser una Qurery global, porque tampoco la pasas por parametro.
Deberias revisar que hace el codigo que llama a la funcion EditDeu. Tal vez ahi es donde hace mover la Query.
caducca
Posts: 106
Joined: Wed Mar 08, 2006 2:24 pm

Re: Raro error en tDolphin

Post by caducca »

Hola CmSoft, lo solucione haciendo que grabe en una función sin salir del dialogo, pero lo que me llama la atención es que con un sistema operativo daba error y con otro no, cosa de mandinga, jajaja
Ahora que recuerdo me paso también cuando trabajaba en DBFs y usaba la clase TDatabase, nada más que no me tiraba error sino que me modificaba el primer registro de la DBF, aquí al definir como autoincremental el código del Deudor arrojaba el error.
Gracias
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Raro error en tDolphin

Post by Carlos Mora »

Caducca,

eso de que la query que esta en un registro y se mueve se debe a que cuando se cierra el diálogo, windows repinta la(s) ventanas que estan abajo inmediatamente. Si la ventana de abajo es un browse, al repintarse empieza a moverse por la query o dbf para ir pintando los registros visibles, dejando el cursor en cualquier lado. Windows NO ESPERA QUE TERMINES DE ACTUALIZAR EL REGISTRO que estas modificando en el diálogo que cerraste, repinta en cuanto dijiste oDlg:close. Para cuando llegaste a la actualizacion del registro ya esta la base cambiada.
Se soluciona como hiciste, actualizando antes de cerrar, o bien editando el registro sobre algo que no sea la propia query. Yo prefiero evitar la edicion sobre la propia query, por que es muy 'a la dbf'', y aunque haya que hace run poco mas de esfuerzo, mejor trabajar sobre variables independientes en cada dialogo que el repintado de otra ventana me pueda cambiar. Hay que tener en cuenta que estas en WINDOWS.

Un saludo
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
caducca
Posts: 106
Joined: Wed Mar 08, 2006 2:24 pm

Re: Raro error en tDolphin

Post by caducca »

Gracias Carlos Mora, lo tendré en cuenta para evitar este error que me volvió loco.
Post Reply