Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Oko unosa datuma u bazu

[es] :: C/C++ programiranje :: Oko unosa datuma u bazu

[ Pregleda: 3082 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Oko unosa datuma u bazu01.04.2007. u 19:16 - pre 207 meseci
potrebna mi je vasa pomoc

iz baze iscitam neki zapis. izmedju ostalog tu je i neki datum koji mi se prikaze u DBEdit1 koji je dodjeljen polju "datum"
e sad, ja moram u neku drugu tabelu ubaciti taj datum iz DBEdita na foru

ADOTable2->Append();
ADOTable2->FieldByName("kopija datuma")->AsDateTime=StrToDate(DBEdit1->Text);
ADOTable2->Post();

ali mi ovo ne radi i javi mi da 01/apr/2007 nije validan datum.

U cemu je ovdje problem? kako da unesem u drugu tabelu datum iz DBEdit1?

kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.adsl-2.sezampro.yu.



+4 Profil

icon Re: Oko unosa datuma u bazu01.04.2007. u 21:04 - pre 207 meseci
Ako ti taj DBEdit nije neophodan, pokušaj da vežeš to date polje za DBDateTimePicker
ili sličnu komponentu koja služi za te stvari ,radi bezbednog prikazivanja/unosa.
Ako to ne odgovara,pokušaj sa f-jama za formatiranje datuma/vremena FormatDateTime
ili stringova FormatString-vidi help, nešto će već upaliti.
Ag + Na -> Xe
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Oko unosa datuma u bazu01.04.2007. u 21:43 - pre 207 meseci
Kod datuma je uvek problem u formatu zapisa. Kako postoje neodredjenosti tipa 01/02/07
gde se ništa ne zna (ni šta je dan ni šta je mesec ni šta je godina), moraš da pomogneš
tako što ćeš dodelu prilagoditi izrazu sa LEVE strane.

Prouči BCB Help za funkciju StrToDate().

Videćeš da postoje dve globalne promenljive koje eventualno možeš upotrebiti:

DateSeparator
ShortDateFormat

Dakle možeš, po ugledu na njihov postojeći format napraviti pomoćni string (na osnovu DBEdit->Text)
koji se uklapa u njega, i to poslati izrazu sa leve strane.

Takođe, te globalne promenljive (DateSeparator i ShortDateFormat) možeš i promeniti i sam zadati
format, pa mu kasnije opet proslediti formatizovan pomoćni string. Ovo je korisno i zbog raznih ispisa
na ekran.

Ja ipak najviše volim da dodelu datuma vršim preko TDateTime klase, koja ima dve korisne metode
za tu svrhu:

EncodeDate()
DecodeTime()

Ali svakako, sam ćeš morati da kažeš šta je godina, mesec, dan:

// Ovde sam parsuj DBEdit->Text i dodeli vrednosti
(ne pada mi na pamet funkcija koda to eventualno sama radi, možda postoji?, ako neko zna neka kaže):

int Godina = 2007;
int Mesec = 4;
int Dan = 1;

TDateTime DT;
DT = EncodeDate( Godina, Mesec, Dan );

ADOTable2->Append();
ADOTable2->FieldByName("kopija datuma")->AsDateTime = DT;
ADOTable2->Post();

Postoji i alternativa, da petljaš sa Regional Setings, ali to ne savetujem, jer svako na svojoj mašini
ima pravo da koristi onakav format koji želi.

 
Odgovor na temu

vlaiv
Vladimir Vlaisavljevic
Novi Sad

Član broj: 15993
Poruke: 352
212.200.249.*



+1 Profil

icon Re: Oko unosa datuma u bazu02.04.2007. u 11:13 - pre 207 meseci
Neka me ispravi neko ako gresim ...

TimeSeparator, DateSeparator i ShortDateFormat (a bogami i Long) se citaju iz regional setting-a kada se aplikacija startuje ...

ima par nacina:

1. Podesis DisplayFormat i Mask za taj DBEdit na vrednosti koje tebi odgovaraju, isto to stavis i u ShortDateFormat
i neces imati problema prilikom konverzije stringa u datum

2. Napravis mask na osnovu ShortDateFormat-a pa ce korisnik morati da unosi datum onako kako je to u regional settings-ima predvidjeno

3. Koristis DBEdit->Field->Value ili DBEdit->Field->AsDateTime (ukoliko je u prvu tabelu uspesno postovano, vrednost polja ce vec
sadrzati odgovarajuci datum)

@X Files

Nije valjda da uvek TDateTime parsiras, enkodiras i dekodiras?
 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.adsl-2.sezampro.yu.



+4 Profil

icon Re: Oko unosa datuma u bazu02.04.2007. u 11:37 - pre 207 meseci
Stvar je u tome da ne postoji nijedan razlog da se datumi prikazuju/unose preko običnog
dbedita: korisniku se mora dodatno objašnjavati u kom formatu se unose.Da li dd/mm/yy ili
mm/dd/yy ili mm-dd-yy ili dd/apr/yyyy i sl. Sa DBDateTimePicker-om se može ručno unositi datum
(kao u editu) ili birati iz kalendara,a ne mora biti direktno povezan sa dataset-om preko
FieldName.
Znači ovo štedi mnogo živaca:
Code:

ADOTable2->Append();
ADOTable2->FieldByName("kopija datuma")->AsDateTime=DBKalendar->Date;
ADOTable2->Post();


Ag + Na -> Xe
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Oko unosa datuma u bazu02.04.2007. u 12:20 - pre 207 meseci
Citat:

vlaiv: Neka me ispravi neko ako gresim ...
TimeSeparator, DateSeparator i ShortDateFormat (a bogami i Long) se citaju iz regional setting-a
kada se aplikacija startuje ...

Da, ali one nisu ReadOnly. A Regional Settings postavke nekada nisu ono što korisnik želi. Ovo se naročito
odnosi na DecimaSeparator-e, koji mogu da naprave puno problema ko ne zna o čemu se radi. Po meni, ako
postoji potreba, najbolje ih je predefinisiati u programu i tako omogućiti da bez obzira na Regional Settingse,
ispisi datuma u pojedinim data kontrolama budu onako kako je zamišljeno.
Citat:

@X Files
Nije valjda da uvek TDateTime parsiras, enkodiras i dekodiras?

Ne uvek, nisam se možda najbolje izrazio.
Ako se radi o bazama podataka i DataAware kontrolama, onda koristim sledeće (s obzirom da ne postoji
standardna TDBDateTimePicker ili samo TDBDateTime):

- TDBEdit (sa podešenim DisplayFormat u property-jima samog polja neke tabele (ne Mask!), a ne sećam se
zašto sam odustao od MakEdit-a u samom TDBEdit polju. Siguran sam da je bio neki praktičan interfejs korisnički
razlog - a možda sam i loše podesio taj Mask, ko zna...)

- TButton (koji poziva TDateTimePicker, i sinhronizovan je sa TDBEdit poljem)



Dalje, upis u bazu više ne pravi probleme jer transfer ide preko TDateTime objekata.

Što se dekodiranja/enkodiranja tiče.

Programi koje radim nisu uvek DB bazirani, datumi koje odnekud čitam i negde upisujem nisu uvek pod mojom
kontrolom. Poslednji slučaj sam imao u čitanju nekih stranih LOG-ova gde sam morao da implementiram celu logiku
koja otkriva u kom formatu je datum upisan, da bih ja dalje mogao da ispravno odreagujem. Tada sam se uverio
da mi je najčistija situacija da datum dovedem u stanje TDateTime objekta, pa otuda i EncodeDate i DecodeDate.

Sad kad malo bolje razmislim, bilo bi idealno da postoji (možda i postoji?) neka funkcija tipa:
DecodeFormatedDate( AnsiString FORMAT, AnsiString STRING, int Godina, int Mesec, int Dan );
...kojom bi se verovatno sve nedoumice rešavale. Ovo nije teško ni napraviti ako je nema.

P.S.
Evo sad videh da Mr. Rejn pominje neku DB -Aware Date komponentu, ja za nju nisam ni čuo...


[Ovu poruku je menjao X Files dana 02.04.2007. u 13:33 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.adsl-2.sezampro.yu.



+4 Profil

icon Re: Oko unosa datuma u bazu02.04.2007. u 13:29 - pre 207 meseci
Citat:
X Files
P.S. Evo sad videh da Mr. Rejn pominje neku DB -Aware Date komponentu, ja za nju nisam ni čuo...

To je zato što sam propustio da dodam da ista pripada JEDI komponentama , nema je na
standardnoj paleti: http://homepages.borland.com/jedi/jvcl/ , ali mislim da ona bitno olakšava
celu stvar.
Ag + Na -> Xe
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Oko unosa datuma u bazu02.04.2007. u 17:42 - pre 207 meseci
^
Pa da, ako je ta Date komponenta kvalitetno projektovana (a ne sumnjam da jeste) onda to svakako rešava problem.
 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.adsl-2.sezampro.yu.



+4 Profil

icon Re: Oko unosa datuma u bazu02.04.2007. u 18:44 - pre 207 meseci
Ovo je offtopic,ali koliko da primetim nešto u vezi JEDI VCL komponenti kad smo već
kod njih,a može interesovati korisnike BCB: ovaj paket koliko je meni poznato
sadrži jedinu funkcionalnu DBImage komponentu (koja postoji),a koja može da prikazuje
JPEG/GIF slike iz baze,tj. preko njih se mogu stavljati slike ovih formata u bazu.
Ovo pišem zato što znam da su mnogi na muci kada trebaju da prikažu neku JPEG/GIF sliku iz
baze na svom front-endu,a standardni DBImage podržava samo bitmape,pa moraju to da reša-
vaju pretvaranjem jpeg-a u stream i stavljanjem u običan DBImage.
Ag + Na -> Xe
 
Odgovor na temu

vlaiv
Vladimir Vlaisavljevic
Novi Sad

Član broj: 15993
Poruke: 352
212.200.249.*



+1 Profil

icon Re: Oko unosa datuma u bazu03.04.2007. u 13:09 - pre 207 meseci
Citat:

Citat:
vlaiv: Neka me ispravi neko ako gresim ...
TimeSeparator, DateSeparator i ShortDateFormat (a bogami i Long) se citaju iz regional setting-a
kada se aplikacija startuje ...



Da, ali one nisu ReadOnly. A Regional Settings postavke nekada nisu ono što korisnik želi. Ovo se naročito
odnosi na DecimaSeparator-e, koji mogu da naprave puno problema ko ne zna o čemu se radi. Po meni, ako
postoji potreba, najbolje ih je predefinisiati u programu i tako omogućiti da bez obzira na Regional Settingse,
ispisi datuma u pojedinim data kontrolama budu onako kako je zamišljeno.


da, znam,

Citat:

...
ima par nacina:

1. Podesis DisplayFormat i Mask za taj DBEdit na vrednosti koje tebi odgovaraju, isto to stavis i u ShortDateFormat
i neces imati problema prilikom konverzije stringa u datum

2. Napravis mask na osnovu ShortDateFormat-a pa ce korisnik morati da unosi datum onako kako je to u regional settings-ima predvidjeno
...


:)
Citat:
Mr. Rejn: Ovo je offtopic,ali koliko da primetim nešto u vezi JEDI VCL komponenti kad smo već
kod njih,a može interesovati korisnike BCB: ovaj paket koliko je meni poznato
sadrži jedinu funkcionalnu DBImage komponentu (koja postoji),a koja može da prikazuje
JPEG/GIF slike iz baze,tj. preko njih se mogu stavljati slike ovih formata u bazu.
Ovo pišem zato što znam da su mnogi na muci kada trebaju da prikažu neku JPEG/GIF sliku iz
baze na svom front-endu,a standardni DBImage podržava samo bitmape,pa moraju to da reša-
vaju pretvaranjem jpeg-a u stream i stavljanjem u običan DBImage.


Ako se ne varam ja sam negde video da postoji mogucnost da se Jpeg registruje kao
format unutar delphi-ja, odnosno da se TGraphics omoguci da cita i pise Jpeg kao native
format (postoje neke funkcije).

Ako je to slucaj onda ne bi bio problem za bilo koji format da se to uradi obzirom da se
moze napisati izvedena klasa koja ima neophodan interface a pise i cita bilo koji format ...

Evo sad bacih pogled i evo sta nadjoh:

Citat:

TPicture::RegisterFileFormatRes


Registers a new TGraphic class for use in the LoadFromFile method.

static void __fastcall RegisterFileFormatRes(System::TMetaClass* vmt, const AnsiString AExtension, int ADescriptionResID, System::TMetaClass* AGraphicClass);

Description

Use RegisterFileFormatRes by specifying a string resource.

The AExtension parameter specifies the three-character system file extension to associate with the graphic class (for example, "bmp" is associated with TBitmap).

The ADescriptionResID parameter specifies the resource ID for a description of the graphic, which then appears in the drop down list of the dialog box (for example, "Bitmaps" is the description of TBitmap).

The AGraphicClass parameter registers the new graphic class to associate with the file format.


Eto, znaci napravis TGraphics klasu koja cita i pise odgovarajuci format u stream i ... registrujes je (pogledaj i Jpeg unit mislim da
u initialize sekciji unita imas poziv za registraciju ogovarajuce klase)
 
Odgovor na temu

[es] :: C/C++ programiranje :: Oko unosa datuma u bazu

[ Pregleda: 3082 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.