Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
CursorAdapter
Message
De
11/12/2003 19:25:05
Peter Wagner
Point Informática Ltda.
Limeira, Brésil
 
 
À
11/12/2003 05:08:51
Information générale
Forum:
Visual FoxPro
Catégorie:
Classes - VCX
Titre:
Divers
Thread ID:
00858008
Message ID:
00858425
Vues:
17
José,
olhando rapidamente o seu código e o erro que esta ocorrendo, tenho quase certeza de que o evento CURSORFILL( ) no seu caso esta retornando .F., isto significa que não se esta criando o CA.
Para verificar isto, antes de executar o formulário, abra o Data Session Window e execute o seu form, selecione a sessão apropriada e veja se o seu CA foi criado.
Note no seu código que vc esta solicitando que seja executado o evento CursorFill(.T.) e solicitando p/ usar o CursorSchema, mas não esta verificando se o evento retornou .T. ou .F. ; se retorna .F., o cursor não será criado e vc não poderá ligar os objetos do formulário ao Cursor, dai o erro qdo vc seta BindControls p/ .T.
Segue abaixo parte do meu evento CursorFill que tenho em uma classe, observe que procuro obter o retorno de Cursorfill, pois se falhar nem o form é instanciado no meu caso, compare com o seu código de CusrosFill.

Detalhe, se vc for usar CursorAdapter, crie uma classe generica CA, do contrario não compensa.
Procure dar uma olhada na classe do Mark McCasland, é um otimo lugar p/ aprender e entender o CA.

[],s
Peter

Código do Evento CursorFill
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
>Criei um CursorAdapter no DataEnvironment do meu Form com VFP 8...
>
>teste de conexão, OK...
>
>quando vou no TextBox do código, vou no ControlSource para referenciar o campo do cursor, o nome do cursor está lá corretamente, porém quando executo meu Form dá mensagem de erro:
>
>Alias 'CURSORTESTE' is not found. Unbinding object txtcodigo
>
>se seto o controle BINDCONTROLS como False, o Form funciona sem erros,
>porém não mostra nada
>
>se seto o controle BINDCONTROLS como True, dá a mensagem de erro acima citada...
>
>o Código está descrito abaixo...
>
>Grato por qualquer informação....
>
>*****************************
>
>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()
>
>text to This.SelectCmd noshow
> select CLIENTES.* from CLIENTES
>endtext
>
>text to This.UpdateNameList noshow
>CODIGO CLIENTES.CODIGO, NOME CLIENTES.NOME, ENDERECO CLIENTES.ENDERECO, BAIRRO CLIENTES.BAIRRO, CIDADE CLIENTES.CIDADE, UF CLIENTES.UF, CPF CLIENTES.CPF, DATA CLIENTES.DATA
>endtext
>
>text to This.UpdatableFieldList noshow
>CODIGO, NOME, ENDERECO, BAIRRO, CIDADE, UF, CPF, DATA
>endtext
>
>local loConnDataSource
>set multilocks on
>loConnDataSource = createobject('ADODB.Connection')
>
>loConnDataSource.ConnectionString = [dsn=empresa;uid=sysdba;pwd=masterkey;trusted_connection=no;]
>
>loConnDataSource.Open()
>This.DataSource = createobject('ADODB.RecordSet')
>This.DataSource.CursorLocation = 3 && adUseClient
>This.DataSource.LockType = 3 && adLockOptimistic
>This.DataSource.ActiveConnection = loConnDataSource
>This.CursorFill(.t.)
>
>if This.__VFPSetup = 1
> This.__VFPSetup = 2
>endif
>return llReturn
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform