Newsgroup: it.comp.lang.delphi
Titolo: Bug su TAdoDataset.AField.Required???

Ciao ragà,
  ho notato che utilizzando ADO la proprietà ADODataSet.AField.Required
è sempre False.
Delphi 6 ACCESS 
Cercando di capire quale potesse essere il problema sono arrivato alle
seguenti conclusioni...
ADO + ODBC + Access:
1) recuperando le info sui campi utilizzando ADOConnection.OpenSchema
il risultato è che come campi obbligatori mi risultano soltanto le
chiavi primarie;
2) recuperando le info sui campi utilizzando ADODataset.AField, la
proprietà required è sempre false;
ADO + Access:
1) recuperando le info sui campi utilizzando ADOConnection.OpenSchema
il risultato è che vedo gli effettivi campi obbligatori e non soltanto
le chiavi primarie; (è evidente che ODBC fa i capricci!)
2) recuperando le info sui campi utilizzando ADODataset.AField, la
proprietà required è sempre false;
Domanda: Ora che ADO recupera in maniera corretta le info sui campi
obbligatori, perchè ADODataSet.AField.Required è sempre false?
Navigando tra il codice della VCL ho notato una cosa strana.....
File ADODB.pas
All'interno del metodo TCustomADODataSet.InternalInitFieldDefs;
vi è implementata la procedura AddFieldDef. All'interno di tale
procedura *Borland* controlla gli attributi relativi al campo del
resulset ritornato da ADO.
Detti attributi si trovano in F.Attributes che è un intero (parametro
della procedura).
Ora, il sesto bit di tale intero rappresenta l'obbligatorietà del campo!
E perchè Borland non fa la verifica anche su questo bit?
Ecco perchè TField.Reqired è sempre false! Non lo valorizza mai?
aggiungendo il controllo su quel bit ora TADODAtaSet.AField.Required
viene valorizzato a dovere!
Forse Borland lo ha dimenticato? E' stato voluto? O sto sparando io
ca..ate una dietro l'altra?
Intanto ora funziona!
Acqua
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

ca..ate una dietro l'altra?
E' risaputo che l'implementazione dell'AdoDataset fornita da borland risente
di diversi bugs.
Potresti provare con TBetterAdoDataset:
http://web.orbitel.bg/vassil/BetterADO.ZIP
scritto apposta per rimediare a queste inefficenze.
Tra l'altro e' stato aggiornato alla 4.03 dopo oltre un anno che non uscivano
fix (a dimostrazione della sua stabilita')
Io lo uso senza problemi.
ooops! ma secondo voi... quando uno arriva a premere ctrl+f9 per inviare il
post su usenet... e' ancora in grado lavorare o gli serve un mese di ferie??
-- 
Morde. 
(morde at programmer dot net)

di diversi bugs.
Scusa mi accodo vuovamente, stavo rileggendo le features e trovo questa nota:
"TBetterADODataSet introduces new features not surfaced in TADODataSet:
[...]
*Proper initialization of the "Required" and "ReadOnly" attributes of TFields
where supported by the provider. See InternalInitFieldDefs.*
[...]
Implemented support for pessimistic locking with the JET provider.
[...]
"
Insomma, da scaricare: e' un must.
;)


 scritto apposta per rimediare a queste inefficenze.
Prenderò nota!
La mia era semplice curiosità... 
Un amico avevo questo problema e cercando di capire il perchè ho scovato
quel bug.
Bè.... si vede proprio che in casa Borland sono molto impegnati!!!
Chissa con che cosa?!?!?! :)
Ti avevo scritto in privato 2-3 giorni fà.
Ma non ti è arrivarto niente?


Ma non ti è arrivarto niente?
No... strano.
riscrivimi!


 No... strano.
:D:D:D:D:D
avevo scitto a 
fake...@libero.it
ok, bye
