Erro com TDataBase

Erro com TDataBase

Postby Ale SB » Mon Apr 14, 2008 10:00 pm

Toda vez q eu uso um Valid no Get a Database retorna este Erro:

Code: Select all  Expand view
Error description: Error BASE/1004  Message not found: TDATABASE:ARRAZFOR

Stack Calls
===========
   Called from: HARBOUR.prg => _CLSSETERROR(157)
   Called from: DATABASE.prg => TDATABASE:ARRAZFOR(397)
   Called from: CadaForn.prg => (b)CADA_FORN(35)
   Called from: CadaForn.prg => (b)CADA_FORN(177)
   Called from: TVGet.Prg => TVGET:LVALID(873)
   Called from: WINDOW.prg => (b)TWINDOW:TWINDOW(281)
   Called from: WINDOW.prg => TWINDOW:END(0)
   Called from: CONTROL.prg => TVGET:END(696)
   Called from: CadaForn.prg => (b)CADA_FORN(245)
   Called from:  => AEVAL(0)
   Called from: CadaForn.prg => CADA_FORN(245)
   Called from: SB_Main.prg => (b)MAIN(99)
   Called from: DOTNETBA.prg => TDOTNETBAR:LBUTTONUP(376)
   Called from: WINDOW.prg => TWINDOW:HANDLEEVENT(0)
   Called from: CONTROL.prg => TCONTROL:HANDLEEVENT(1414)
   Called from: DOTNETBA.prg => TDOTNETBAR:HANDLEEVENT(205)
   Called from: WINDOW.prg => _FWH(3252)
   Called from:  => WINRUN(0)
   Called from: WINDOW.prg => TWINDOW:ACTIVATE(926)
   Called from: SB_Main.prg => MAIN(159)


Oq podes Ser ?

Saludos
aleseribeli@hotmail.com

FwH, Hb Svn, ADS 8.1, ADS 10, Pelles C, FwPPC, MsVc 2008, MsVc 2010
"Conhecimento, você não subtrai quando divide; mas soma e multiplica."
**---Mário Persona---**
User avatar
Ale SB
 
Posts: 248
Joined: Wed Jan 11, 2006 11:30 am
Location: Campo Grande-MS / Brasil

Postby karinha » Wed Apr 16, 2008 12:55 pm

ARRAZFOR


Voce tem no banco de dados este campo: ARRAZFOR ??

Se tem, Exemplo no GET:


REDEFINE GET aGet[1] VAR DbClientes:ARRAZFOR PICTURE "@!" OF oDlg

Abraços.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7381
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby Ale SB » Wed Apr 16, 2008 11:53 pm

Sim ..logicamente meu amigo, eh como falei..soh ocorre este erro, qdo eu ultilizo algum valid no GEt, sem o valid compila numa Boa.
aleseribeli@hotmail.com

FwH, Hb Svn, ADS 8.1, ADS 10, Pelles C, FwPPC, MsVc 2008, MsVc 2010
"Conhecimento, você não subtrai quando divide; mas soma e multiplica."
**---Mário Persona---**
User avatar
Ale SB
 
Posts: 248
Joined: Wed Jan 11, 2006 11:30 am
Location: Campo Grande-MS / Brasil

Postby Antonio Linares » Thu Apr 17, 2008 8:24 am

Prueba a hacer esto:

MsgInfo( Field->ARRAZFOR )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41436
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby karinha » Thu Apr 17, 2008 11:57 am

NO GET:

VALID VALIDAR( DbClientes:ARRAZFOR, lAppend, DbClientes, Etc )

na funcao:

STATIC FUNCTION VALIDAR( cCodCli, lAppend, DbCLientes, Etc )

IF GETASYNCKEY( VK_UP )
RETURN( .F. )
ENDIF

DBSEEK( cCodCli )

IF FOUND()

...
ELSE

...
ENDIF

RETURN( .T. )
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7381
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby Ale SB » Thu Apr 17, 2008 8:25 pm

Encontrei lo problema ou quase.

Se ultilizo um Valid no Get e destruo los gets desta forma aqui, me dá Erro no Database:

Code: Select all  Expand view
ACTIVATE DIALOG oDlg CENTERED ON MOVE(oDlg:Center) VALID lSair             
  dbCloseAll()
  lSair:=.F.

  Aeval(oGet, { |x| IF( x#Nil,x:End(),) })  //--> Aki para destruir Array de Gets 

  oSay:End()
  EndDialog()
  Release All
  SysRefresh()
   
RETURN nil 

Se comentar el linha para destruir gets no dá erro.

Mas, se y usar desta forma aki com bKeyDown posso destruir los gets normal que no me dá erro:
Code: Select all  Expand view
#include "FiveWin.ch"

#define DLGC_WANTALLKEYS 4

FUNCTION ConsOC_01()
.
.
    REDEFINE GET oGet[1]  VAR oDbfCobranca:codicli ID 21 OF oDlg  PICTURE "999999" Update     
             oGet[1]:bKeyDown := {|nKey| oGet[1]:Assign(), IF( nKey == VK_RETURN, ( AchaOC(oDlg,cCodiCli), oDlg:UpDate() ),  NIL ) }     

ACTIVATE DIALOG oDlg CENTERED ON MOVE(oDlg:Center) VALID lSair             
  dbCloseAll()
  lSair:=.F.

  Aeval(oGet, { |x| IF( x#Nil,x:End(),) })  //--> Aki para destruir Array de Gets 

  oSay:End()
  EndDialog()
  Release All
  SysRefresh()
   
RETURN nil 


Tambien tem outro caso que me da esto erro:

Sem Ultilizar Valid ou bKeyDown, mas, si ultilizando uno Browse(xbrowse) com algunos Gets normais, somente para leitura.

Ao movimentar el Cursor no browse passando pelos registros, atualiza los Gets automaticos com las outras informacions relativos ao registro do browse em q estoy parado, bem simples.

Ao sair del browse se tengo la opçao de Destruir los Gets desta forma;

Code: Select all  Expand view
  Aeval(oGet, { |x| IF( x#Nil,x:End(),) })  //--> Aki para destruir Array de Gets 


Me dar lo mesmo erro na database dos anteriores, si comento el linha para no destruir los gets, no me dá Erro.


Alguma soluçao para isto ???????????????


Saludos Ale
aleseribeli@hotmail.com

FwH, Hb Svn, ADS 8.1, ADS 10, Pelles C, FwPPC, MsVc 2008, MsVc 2010
"Conhecimento, você não subtrai quando divide; mas soma e multiplica."
**---Mário Persona---**
User avatar
Ale SB
 
Posts: 248
Joined: Wed Jan 11, 2006 11:30 am
Location: Campo Grande-MS / Brasil

Postby karinha » Thu Apr 17, 2008 8:34 pm

ALE, VOCE DEU UM DBCLOSEALL() ANTES DO AEVAL. ????
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7381
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby Ale SB » Thu Apr 17, 2008 9:14 pm

karinha wrote:ALE, VOCE DEU UM DBCLOSEALL() ANTES DO AEVAL. ????


Jejejeje......agora que eu vi...jejejej

Gracias Joao

Mas me tire uma duvida, pq quando eu usava o bKeyDown, nao dava erro e com o bKeyDown eu podia usar o dbCloseall() antes do Eval ???

Saludos
aleseribeli@hotmail.com

FwH, Hb Svn, ADS 8.1, ADS 10, Pelles C, FwPPC, MsVc 2008, MsVc 2010
"Conhecimento, você não subtrai quando divide; mas soma e multiplica."
**---Mário Persona---**
User avatar
Ale SB
 
Posts: 248
Joined: Wed Jan 11, 2006 11:30 am
Location: Campo Grande-MS / Brasil

Postby karinha » Fri Apr 18, 2008 12:09 pm

Se entendi sua pergunta, é porque o FIVEWIN se executa de baixo para cima.

No bKeyDown não há checagem de eventos, já na saida do ACTIVATE DIALOG há checagem de eventos, e como voce esta usando OBJETOS DATABASE, todos os eventos são baseados no banco de dados.

Se voce fechou o banco de dados, todos os eventos pertencentes ao banco de dados desaparecem naturalmente.

Para fechar um banco de dados quando usa-se OBJETO DATABASE, o mais correto, já que podemos trabalhar com n bancos de dados, fechar e abrir em tempo real, ideal é:

DbClientes:Close()
DbEstoque:Close()

Etc.

Abraços
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7381
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby Ale SB » Fri Apr 18, 2008 5:55 pm

Gracias Joao, pela explicação.....muito bom.

Saludos
aleseribeli@hotmail.com

FwH, Hb Svn, ADS 8.1, ADS 10, Pelles C, FwPPC, MsVc 2008, MsVc 2010
"Conhecimento, você não subtrai quando divide; mas soma e multiplica."
**---Mário Persona---**
User avatar
Ale SB
 
Posts: 248
Joined: Wed Jan 11, 2006 11:30 am
Location: Campo Grande-MS / Brasil


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 34 guests