Newsgroup: it.comp.lang.delphi
Titolo: Dbgrid controllo input Vi prego aiutatemi

devo terminare entro la fine della settimana un programmino per la 
gestione dei scrutini elettronici...
mi manca solo una cosetta che non riesco a risolvere
googlando non trovato nulla vi prego di potermi dare una mano
il mio problema è il seguente:
ho una dbgrid con 9 campi:
cognome|nome|condotta|scritto|orale|pratico|media|assenze|media assenze|
tra cui
cognome nome media e media assenze sono readonly i cognomi e i nomi sono 
presi automaticamente dal db la media dei voti e la media delle assenze 
è fatto tramita chiamate sql tutto il resto viene inserito dal docente
il mio professore (con il quale lavoro)mi ha chiesto di poter 
controllare il valore che viene inserito dal docente all'interno dei 
campi condotta scritto orale e pratico in modo da non immettere nel 
database valori non reali cioe controllando quindi che il valore 
inserito si compreso tra un range di valori
i valori inseribili debbono poter essere valori di tipo string che vanno 
da 0 a 10 con l'aggiunzione se richiesto di + - 1/2
il mio problema è che non riesco a controllare quest'input vi prego
quello che devo fare è semplicemente lanciare uno showmessage('voto non 
accettabile') in modo che il docente si obbligato a cambiare il voto e 
inserirlo correttamente
vi prego datemi una mano sono rovinato se non ci riesco....!!!!!....

metti i controlli nella beforepost.

 
ho provato e non funziona!!!!!!!!!
forse ho sbagliato
qualcosa....

 ho provato e non funziona!!!!!!!!!
Mai...mai dire semplicemente "non funziona"...
(soprattutto ad Alberto) ;-)
-- 
Marco «Alka» Breveglieri	
http://www.marco.breveglieri.name
  «bvmcnxsjlkhròhyeq, potrei scrivere a questo punto,
   se mi addormentassi sui tasti» (Daniele Luttazzi)

 
quello che voglio dire è che la procedura l'ho scritta cosi:
procedure TfrmScrutini.ADOQuery3BeforePost(DataSet: TDataSet);
var v:string;
begin
  v := ADOQuery3.FieldByName('SCRITTO').asstring; //voto come l'ha 
inserito  l'utente
   if v <> '6' then
    DatabaseError('Il voto inserito non è accettabile');
end;
ora pero il valore che devo inserire tra le parentesi di fieldbyname 
deve essere il titolo della colonna se non sbaglio?!
comunque facendo cosi non succede nulla accetta sempre tutto.

qualcosa....
Se "non funziona" vuol dire che accetta comunque le
modifiche, ricordati che se il valore immesso non č
giusto e vuoi rigettarlo devi usare la procedura Abort,
come puoi vedere anche dall'Help di Delphi sull'evento.
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin
  if not FunzioneControllaVoto(DataSet.FieldbyName().Value) then
  begin
    MessageDlg(
      'Il voto inserito non č scritto in maniera corretta.',
      mtWarning, //anche se io preferisco un mtInformation
      [mbOk],
      0
    );
    Abort;
  end;
end;
ora ti resta di scrivere la funzione
FunzioneControllaVoto che data la stringa del valore
del campo ti torna True se il valore č un voto
accettabile mentre False se non lo č.
	Ciao
	MassimoB
 
---------------------------------
http://www.massimobeschi.it/
---------------------------------
Se tu pagare come dici tu ...
Io lavorare come dico io ...
Se tu pagare come dico io ...
Io lavorare come dici tu ...
---------------------------------

>  if not FunzioneControllaVoto(DataSet.FieldbyName().Value) then
scusami mi sono scrodato di aggiungere che fra le
parentesi devi mettere il nome del campo che vuoi
controllare 'Scritto' o 'Orale' o 'Condotta' ...


 ---------------------------------
mi sono dimenticato di dirvi che il voto è di tipo string.

mi sono dimenticato di dirvi che il voto è di tipo string.
mi sa che lo hai detto comunuqe se usi
FieldByName('...').Value come ho fatto io ottieni un
Variant cioè un tipo generico che va bene come
"sostituto" per diversi tipi di Base Integer, String,
Double, etc in pratica se ne campo c'è una stringa
scrivere
FunzioneCheAccettaStringhe(FieldByName('...').Value) o
FunzioneCheAccettaStringhe(FieldByName('...').AsString)
è quasi la stessa cosa, l'unica differenza credo si
possa trovare se il valore è Null allora se usi
AsString l'eccezione di conversione a stringa non
valida viene sollevata dalla chiamata alla proprietà
AsString.


ANCORA CON IL SEMPLICE "NON FUNZIONA"?
E TU 6 UNO DI QUELLI CHE STA X PRENDERE UN DIPLOMA ALL'ITIS?
PER FAVORE, MOLLA DELPHI E VAI A USARE ACCESS, GRAZIE!
E CHE CAZZO!!!
AS

Alberto Salvati ha scritto:

guarda che dopo ho spiegato perche non funzionava...
cmq massimo io ho provato ma continua a non dare nulla posso inserire 
qualsiasi cosa e non mi visualizza la message box
ora ti passo il pezzo di codice
procedure TfrmScrutini.ADOQuery3BeforePost(DataSet: TDataSet);
begin
   if (DataSet.FieldbyName('SCRITTO').Value) <> '6' then
   begin
     MessageDlg(
       'Il voto inserito non č scritto in maniera corretta.',
       mtWarning, //anche se io preferisco un mtInformation
       [mbOk],
       0
     );
     Abort;
   end;
end;
č strano non trovi?

č strano non trovi?
premessa: se vuoi rispondere ad una mia argomentazione
rispondi al mio messaggio.
E' molto strano in quanto io ho provato e funziona
regolarmente, esattamente con il codice da te/me
inviato.
Non so che altro aggiungere con queste informazioni.


 ---------------------------------
No non potete lasciarmi cosi... sono rovinato se non lo faccio 
funzionare.......

 funzionare.......
Io sono stato bocciato 2 volte in due istituti diversi, mi sono diplomato a
27 anni e questo non mi ha impedito di diventare libero professionista,
scrivere software e fare il lavoro che ho sempre desiderato: il
programmatore..... non disperare perche' se lo vorrai troverai sempre una
via di uscita! Forza e coraggio! Rimboccati le maniche, testa bassa e
provare, provare, provare..
..puoi provare usando la funzione TryStrToFloat della sysutils: se ti
ritorna false fagli vedere il messagebox, lancia l'abort e impedisci cosi'
di scrivere sul db un dato inconsistente.
Fagli fare tutto il lavoro di convalida alla funzione, a te interessa solo
che il valore stringa diventi un float (perche' ci vogliono i mezzi punti
di voto 6.5, 7.5 ecc) e che possa essere scritto cosi' sul db.
ciao in bocca al lupo per il diploma che, alla fine, non servira' proprio a
un cazzo ma almeno ti dara' la possibilita' di fare l'universita'. ;-)
-- 
Morde. 
ICLDweb: 
http://www2.samatel.com/icld/

Benvenuto nel club!
Questa è una situazione abbastanza comune nel ns lavoro.
AS

LORDMASTER ha scritto:

friend del dbgrid
Ciao

funzionare.......
non ho detto che ti mollo, anche perchè non sono gay e
non siamo mai stati insiaeme :P (che simpatia), ma che
mi servono maggiori informazioni per capire quale
potrebbe essere il tuo problema.
Magari mandami i sorgenti alla email che trovi sul mio
sito, non ti garantisco niente perchè al momento ho dei
grossi problemi di studio anche io e con qualcosa
(fisica) che con la programmazione non c'entra quasi
una cippa.
Oppure puoi aggiungere qualche informazione qui ...
insomma qualcosa che mi dia una base su cui ragionare e
soprattutto che mi faccia capire che DB usi (visto che
usi una AdoQuery forse Access), che Delphi, che ti pare
... :P
