Newsgroup: it.comp.lang.delphi
Titolo: TDBEdit

Perche dopo aver editato una TDBedit, nel debug la ..dbedit1.Text o 
.EditText danno la stringa vuota? Possibile non si possa leggere il suo 
valore senza ricorrere alla sua proprieta' .Field..?
Giorgio

 valore senza ricorrere alla sua proprieta' .Field..?
...a che pro?
A.

Alberto Salvati ha scritto:

Volevo fare un controllo se il valore assegnato ad un campo tramite una 
DBEdit esite gia' o no, ma ho gia' risolto in altra maniera.
giorgio

 DBEdit esite gia' o no, ma ho gia' risolto in altra maniera.
Puoi utilizzare comunque il valore del campo, se questo controllo deve 
avvenire in ogni caso prima di un'operazione di "post".
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

 
Questo lo so, ad esempio, vado amemoria tramite ...Field.AsString, ciao 
giorgio

 Questo lo so, ad esempio, vado amemoria tramite ...Field.AsString
...allora non ho capito il problema. :)


 
In sostanza volevo avere gia' il valore stringa di un DBedit per 
controllare se quel valore, relativo ad un certo campo, esiste gia' nel 
database,ed in caso affermativo usare un messagedlg per avvisare l'utente.
Alla fine ho usato un Tedit, un select... per il confronto e dopo 
l'Append assegno il valore digitato al campo relativo.
ciao Giorgio

Dopo dura riflessione, Giorgio Padoan ha scritto :

Io accedo tranquillamente alla DBEdit.Text a livello di codice. Es 
String s := DBEdit1.Text.
-- 
Scrivo su Usenet da quando il Mar Morto era solo indisposto.


Non e' piu' semplice effettuare un controllo nel BeforePost tramite una 
query? Se segui questo sentiero devi avere, ovviamente, qualche altro 
campo da usare come ID univoco (Contatore in Access, campo collegato ad 
un generator in FireBird...). Nel caso la query dia come risultato che 
esiste gia' un altro record con lo stesso valore, ma per un ID diverso, 
mostri il messaggio e abortisci l'operazione.
Tutto questo IMHO.

 Tutto questo IMHO.
Non mi piace e poi il post lo do quando tutti i campi sono stati riempiti, 
quindi inutilmente se il campo era doppio...
Come faccio adesso gli altri campi vengono riempiti solo dopo il controllo e 
mai per nulla, Giorgio 

 
All'interno di quale evento?

 mai per nulla, Giorgio
L'operazione di controllo deve quindi essere eseguita ogni volta che il 
valore all'interno della casella viene modificato, perï¿œ. Se spostiamo 
questa logica in un'architettura client/server, significa fare delle 
query ripetute ogni volta che si aggiunge o si toglie un carattere, e 
non mi sembra una soluzione comunque ottimale.
Ciao,
   Marco.


non mi sembra una soluzione comunque ottimale.
No, leggi sopra.
Ciao giorgio 

 qualcosa?
Beh, qualcosa cambia senz'altro perche' il trigger ti da' la sicurezza 
d'avere un dato sicuramente univoco senza ulteriori controlli. Io uso i 
generators in Firebird e prima usavo i campi contatore in Access senza 
dovermi scervellare a creare controlli per assicurare l'univocita' di un 
campo. Io uso sempre un campo da riempire con un generator associato ad 
un trigger in Firebird anche se nella tabella c'e' un campo univoco che 
il mio software non puo' calcolare perche' e' fornito dall'utente (il 
codice di un articolo, la partita IVA di un fornitore, il numero 
progressivo di una fattura...).
Tutti questi sono solo consigli, ovviamente. Nessuno di noi ha la 
bacchetta magica per far funzionare tutto e bene.


Un click non e' un problema.
Se il campo immesso e' gia' esistente deve cambiarlo e rimodificare anche 
gli altri campi in quanto dipendono da questo, quindi la tua soluzione 
farebbe perdere ben + tempo che un semplice click, dopo il quale inserisce 
gli altri campi sicuro che non dovra' ripetere altro, giorgio 


La mia soluzione si basava sulle informazioni che tu hai dato. Il fatto 
che gli altri campi dipendano dal campo da controllare lo dici solo ora.
Solo per curiosita', e senza voler conoscere i segreti del tuo software, 
di cosa si tratta?

 di cosa si tratta?
Un archivio di monografie nel quale ci possono essere doppioni in casi 
eccezionali, il campo principale e' il titolo, gli altri sono:
autore, n.pagine, editore, anno ed., ecc
ciao Giorgio 

 attiva il controllo sulla presenza o no, nel campo associato, del valore
Per questo tipo di controllo credo sia sufficiente l'evento OnValidate 
del TField sotto il TDBEdit. Così eviti di far premere il pulsante e 
notifichi via codice se esiste il doppione o meno.
Ciao.

 ha scritto nel messaggio 
news:4c07869d$0$40287$4faf...@reader2.news.tin.it...

Se avviene prima del .Post va bene come soluzione, grazie giorgio 


Avviene quando tenti di uscire dal TDBEdit.

 ha scritto nel messaggio 
news:4c07a395$0$18664$4faf...@reader3.news.tin.it...

Ok, questa potrebbe essere una alternativa migliore a cio' che faccio ora, 
giorgio