Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
CursorAdapter and Indexes...
Message
From
06/08/2003 23:26:35
Peter Wagner
Point Informática Ltda.
Limeira, Brazil
 
 
To
All
General information
Forum:
Visual FoxPro
Category:
Other
Title:
CursorAdapter and Indexes...
Miscellaneous
Thread ID:
00817559
Message ID:
00817559
Views:
75
Im receiving an error message when I try to Index a CA in the AfterCursorRefresh and AfterCursorFill methods. I try to use a generic Index code, so it will be valid for all CA, and it only indexes the CA if a propertie called lIndexar is .T.

I also tried using a simple code like this in the AfterCursorFill method like this one...
LPARAMETERS luseCursorSchema, lNoDataOnLoad, cSelectCmd, lResult
INDEX ON CA_Bancos.NOME_BANCO TAG NOME_BANCO
SET ORDER TO TAG NOME_BANCO
DODEFAULT()
but the error message is the same...

The Error message I get is this:
Error loading file - record number 5.
grdCa_bancos or one of its members.
ControlSource : Alias 'CA_BANCOS' is not found

I cant understand the reason for this error because in the debugger I see the value for
This.Alias = CA_Bancos
This.Name = CA_Bancos

Any Ideia what Im missing ?

Thanks in Advance

Peter
DEFINE CLASS ca_bancos AS ca_base
	Comment = "Subclasse CA para Tabela Bancos"
	CursorSchema = "CODIGO_BANCO I,NOME_BANCO C(35),NUMERO_BANCO C(3)"
	Alias = "ca_bancos"
	Tables = "Bancos"
	pcodigo_banco = 0
	cfiltrocmdselect = "Codigo_banco = ?pCodigo_banco"
	Name = "ca_bancos"

	PROCEDURE Init
		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 
		THIS.DATASOURCE = oCA.Datasource
		
		TEXT TO This.SelectCmd NOSHOW
		SELECT * FROM BANCOS  WHERE Codigo_banco = ?pCodigo_banco
		ENDTEXT
		
		TEXT TO This.DeleteCmd NOSHOW
		EXECUTE SPA_DEL_BANCOS  ?ca_Bancos.Codigo_banco
		ENDTEXT
		
		TEXT TO This.InsertCmd NOSHOW
		EXECUTE SPA_INS_BANCOS  ?ca_Bancos.NOME_BANCO,  ?ca_Bancos.NUMERO_BANCO
		ENDTEXT
		
		TEXT TO This.UpdateCmd NOSHOW
		EXECUTE SPA_UPD_BANCOS  ?ca_Bancos.CODIGO_BANCO,  ?ca_Bancos.NOME_BANCO,  ?ca_Bancos.NUMERO_BANCO
		ENDTEXT

		*** End of Setup code: DO NOT REMOVE 
		IF THIS.__VFPSetup = 1 
		 THIS.__VFPSetup = 2 
		ENDIF
		Return llReturn 
	ENDPROC

	PROCEDURE AutoOpen
          	*** Setup code: DO NOT REMOVE
	         IF NOT PEMSTATUS(THIS, '__VFPSetup', 5)
			THIS.ADDPROPERTY('__VFPSetup', 1)
			THIS.INIT()
		ENDIF
		     *** End of Setup code: DO NOT REMOVE
		IF NOT DODEFAULT()
		     RETURN .F.
		ENDIF
		NODEFAULT
	ENDPROC

	PROCEDURE AfterCursorRefresh
	IF THIS.lIndexar
		LOCAL old_talk, old_notify, old_safety
		old_talk = SET("Talk")
		old_notify = SET("Notify")
		old_safety = SET("Safety")

		SET TALK OFF
		SET NOTIFY OFF
		SET SAFETY OFF

		gnFieldcount = AFIELDS(gaMyArray)
		FOR nCount = 1 TO gnFieldcount
			xNome = gaMyArray(nCount,1)  	&& Nome do campo
			xTipo = gaMyArray(nCount,2)		&& Tipo de campo
			IF INLIST(xTipo,"C","I","D","N","T","Y")
	* Cria o Indice com o memso nome da coluna
              			INDEX ON &xNome. TAG &xNome.
			ENDIF
		ENDFOR

		SET TALK &old_talk.
		SET NOTIFY &old_notify.
		SET SAFETY &old_safety.
	ENDIF
	ENDPROC
ENDDEFINE
The CursorFill method in the Parent Class
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
Next
Reply
Map
View

Click here to load this message in the networking platform