Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Problema com classe CursorAdapter
Message
De
16/04/2003 21:23:08
Peter Wagner
Point Informática Ltda.
Limeira, Brésil
 
 
À
Tous
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Titre:
Problema com classe CursorAdapter
Divers
Thread ID:
00778687
Message ID:
00778687
Vues:
74
Desenvolvi um builder (baseado na classe de mark McCasland) para gerar uma classe base CursorAdapter,
e uma serie de subclasses (uma para cada tabela da base de dados).
Na classe Base, no metodo CursorFill, faço uma verificação, se deve ser usado o CursorSchema e se deve carregar dados ao iniciar (NoDataOnLoad).

Cada uma das subclasses, no evento Init, apresenta a configuração de varios parametros
da sub-classe, como SelectCmd, DeleteCmd, InsertCmd, etc...
Defini a propriedade de usar Curschema e NodataOnLoad como .T. na nesta subclasse.

No DE de um Form criei um CA baseado nesta subclasse chamado crsCategories.

Quando tento executar este Form, ele retorna o erro N° Error N° 2139 - SelectCmd property is empty.

Ocorre que o evento Init de crsCategories, tem a função DODEFAULT(), que chama a classe Pai.
E nesta classe esta definida a configuração do CA.

Este erro ocorre quando é executado o metodo CursorFill, informando que não existe comando Select.

Allguem sabe o porque deste erro ?

Agradeço antecipadamente a qualquer Ajuda ou Dica que me mostre o caminho para resolver o problema.

PS: O erro permanece se remover o código do metodo CursorFill

Código do evento INIT da classe CA_Categories (gerado pelo Builder)
local llReturn
DO CASE
 CASE NOT PEMSTATUS(This, '__VFPSetup', 5)
  THIS.AddProperty('__VFPSetup', 0)
 CASE THIS.__VFPSetup = 2
  THIS.__VFPSetup = 0
  RETURN 
ENDCASE 
llReturn = DODEFAULT() 
*** Select connection code: DO NOT REMOVE 
SET MULTILOCKS ON 
***<SelectCmd> 
TEXT TO This.SelectCmd NOSHOW
SELECT * FROM CATEGORIES  WHERE CategoryID = ?pCategoryID
ENDTEXT
***</SelectCmd> 

***<DeleteCmd> 
TEXT TO This.DeleteCmd NOSHOW
EXEC PA_DEL_CATEGORIES  ?crsCategories.CategoryID
ENDTEXT
***</DeleteCmd> 

***<InsertCmd> 
TEXT TO This.InsertCmd NOSHOW
EXEC PA_INS_CATEGORIES  ?crsCategories.CATEGORYNAME,  ?crsCategories.DESCRIPTION,  ?crsCategories.PICTURE
ENDTEXT
***</InsertCmd> 

***<UpdateCmd> 
TEXT TO This.UpdateCmd NOSHOW
EXEC PA_UPD_CATEGORIES  ?crsCategories.CATEGORYID,  ?crsCategories.CATEGORYNAME,  ?crsCategories.DESCRIPTION,  ?crsCategories.PICTURE
ENDTEXT
***</UpdateCmd> 


*** End of Setup code: DO NOT REMOVE 
IF THIS.__VFPSetup = 1 
 THIS.__VFPSetup = 2 
ENDIF
Return llReturn 
Código do Método CursorFill (gerado pelo Builder)
LPARAMETERS lUseCursorSchema, lNoData, nOptions, uSource
IF NOT PEMSTATUS(THIS, 'lADO_Done', 5)
	THIS.ADDPROPERTY('lADO_Done')
ENDIF
IF THIS.DATASOURCETYPE = [ADO] AND NOT THIS.lADO_Done
	RETURN
ENDIF
LOCAL llSchema, llNoData, lnOptions, luSource
llSchema  = lUseCursorSchema
llNoData  = lNoData
lnOptions = nOptions
luSource  = uSource
IF VARTYPE(THIS.lUsarCursorSchema) <> "L"
	THIS.lUsarCursorSchema = .F.
ENDIF
IF VARTYPE(THIS.lNoDataOnLoad) <> "L"
	THIS.lNoDataOnLoad = .F.
ENDIF
IF VARTYPE(THIS.nFillOptions) <> "N"
	THIS.nFillOptions = -1
ENDIF
IF PCOUNT() < 1 OR VARTYPE(llSchema) <> "L"
	llSchema = THIS.lUsarCursorSchema
ENDIF
IF PCOUNT() < 2 OR VARTYPE(llNoData) <> "L"
	llNoData = THIS.lNoDataOnLoad
ENDIF
IF PCOUNT() < 3 OR VARTYPE(lnOptions) <> "N"
	lnOptions = IIF(THIS.DATASOURCETYPE = [ADO], THIS.nFillOptions, 0)
ENDIF
LOCAL llRetVal
IF THIS.DATASOURCETYPE = [ADO]
	llRetVal = DODEFAULT(llSchema, llNoData, lnOptions, THIS.oADO_Command)
ELSE
	IF PCOUNT() = 4
		llRetVal = DODEFAULT(llSchema, llNoData, lnOptions, luSource)
	ELSE
		llRetVal = DODEFAULT(llSchema, llNoData, lnOptions)
	ENDIF
ENDIF
NODEFAULT
RETURN llRetVal
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform