Newsgroup: it.comp.lang.delphi
Titolo: DBEdit "calcolato" tramite combobox

ciao a tutti,
come posso fare per incrementare di "n" mesi una data contenuta in un DBEdit
e visualizzarla in un'altra DBEdit??? In particolare devo poter scegliere il
numero di mesi tramite una combobox...ho provato questo codice (con una sola
condizione per ora...poi implementerò una case of...) ma non visualizza
nulla! Ho provato ad inserirlo in numerosi eventi "On calc fields" sull'On
Enter e On Change della combobox ma niente!!! Dove sbaglio???
if form9.dbcombobox1.Items.Strings[1]='semestrale' then
form8.adotable1.FieldByName('datascadenza').AsDateTime:=IncMonth(strtodate(f
orm9.dbedit8.text), 6);
ciao!

L'if lo fa?
No è più semplice fare:
if form9.dbcombobox1.ItemIndex=numero then
dove numero è l'elemento del cb?
Come evento usa l'OnSelect del cb
PS La prossima volta descrivi meglio cosa non funziona!
--
_________________________________
Edmondo Di Tucci 
snar...@tin.it
www.powernetsi.it
 
edm...@powernetsi.it

Mi spiego meglio:
allora, la form č cosě strutturata:
1) Combobox con scelta "Semestrale", "Quadrimestrale", "Annuale"...ecc
2)DBEdit "Data contratto": se la tabella si trova nello stato "insert"
visualizza la data odierna (cmq modificabile). Ho impostato la mask edit
(gg/mm/aa)
3)DBEdit "Data scadenza": vuota se la tabella č in insert, viene calcolata
in base alla scelta dell'item della combobox.
Esempio
La tabella si trova in insert. Viene proposta come "data contratto" la data
odierna (08/10/02). Dalla combobox scelgo "Semestrale". Nel DBedit viene
visualizzata la data odierna "maggiorata" di 6 mesi(08/04/02).
Sono riuscito ad eseguire il calcolo della data scadenza ma c'č un problema:
dopo aver scelto "semestrale" dalla combobox ed eseguito il calcolo...se lo
rieseguo scegliendo "quadrimestrale" la data viene trasformata
automaticamente in "08/04/2002" che viene interpretata come formato data non
valida....come posso rimediare???
ecco il codice attuale:
procedure TForm9.FormActivate(Sender: TObject);
begin
edit1.Text:='';
dbedit8.Text:=datetostr(date);
end;
procedure TForm9.SpeedButton1Click(Sender: TObject);
var
present: TDateTime;
Year, Month, Day: Word;
begin
if dbcombobox1.itemindex=0 then begin
present:=strtodate(dbedit8.text);
DecodeDate(Present, Year, Month, Day);
DBedit9.text := datetostr(IncMonth(Present, 6));
present:=strtodate(dbedit8.text);
end;
if dbcombobox1.itemindex=2 then begin
present:=strtodate(dbedit8.text);
DecodeDate(Present, Year, Month, Day);
DBedit9.text := datetostr(IncMonth(Present, 4));
present:=strtodate(dbedit8.text);
end;
if dbcombobox1.itemindex=3 then
DBedit9.text := datetostr(IncMonth(Present, 3));
if dbcombobox1.itemindex=4 then
DBedit9.text := datetostr(IncMonth(Present, 2));
if dbcombobox1.itemindex=5 then
DBedit9.text := datetostr(IncMonth(Present, 1));
end;
end

 valida....come posso rimediare???
Non impostando il Text del DBEdit, ma assegnando il valore direttamente al
campo associato.
Fossi in te, eviterei del tutto l'uso dei controlli db-aware (a mio avviso
creano piu' casino che altro), io non li uso per molte operazioni.
--------------------------------
Inviato via 
http://usenet.libero.it

Se non ho capito male l'inghippo è qui:
DBedit9.text := datetostr(IncMonth(Present, 4));
Invece di DateToStr (ti consiglio di evidenziare col maiuscolo i 'termini'
componenti) che fa un po' come gli pare usa FormatDateTime con cui puoi
formattare la data come vuoi (e quindi l'anno con 2 cifre)
Formats a TDateTime value.
Unit
SysUtils
Category
date/time routines
function FormatDateTime(const Format: string; DateTime: TDateTime): string;
Description
FormatDateTime formats the TDateTime value given by DateTime using the
format given by Format. See Date-Time format strings for more information.
If the string specified by the Format parameter is empty, the TDateTime
value is formatted as if a 'c' format specifier had been given.

la dbedit è solo incaricata di mostrare i dati.
Chi conta è il datafield ad essa associato:
MioDataset.FieldByName('NomeCampo').AsDateTime := TuaData
Bye
A.

"> MioDataset.FieldByName('NomeCampo').AsDateTime := TuaData
grazie mille!!! funziona! c'č solo un problema: non riesco ad incrementare
la data di un anno con la funzione incyear...