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

Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja

[es] :: Pascal / Delphi / Kylix :: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja

[ Pregleda: 3045 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja21.11.2007. u 12:21 - pre 200 meseci
Problem je u sledecem
ima vise polje koja treba da budu brojevi,ali ne moraju da se unesu,tu nastaje greska pri unosu u bazu jer prazno 'numeric' poljene ne moze da se unese,onda bi trebao praviti IF uslov da proveri da li je polje prazno pa onda da ga unosi u bazu sto je malo komplikovanojer ima 10-tak polja puta 10 tabela. Onda sam stavio da polje bute 'char' i to je radilo lepo dok nisam dosao do stampe,FreeReport pravi gresku jer ne moze da sabira ako je string prazan,dobio sam savet kako prebaciti prazan ptring u '0' da bi se moglo sabirati ali oped ima puno atributa koje bih morao izmenjati i proveravati da li je prazno ili nije. Ako Atribut stavim da bude 'numeric' i pri upisu u bazu proverim da li je polje prazno i ako jeste da ga popuni sa '0' onda u stampi mi ispisuje isto '0' a treba da je prazno, '0' ne treba da se stampa.

Sve u svemu da sumiram,polja ne moraju da se unesu(brojevi) i pri stampi treba da bude prazno polje ako se nije ni unelo a da moze da se sabira sa ostalim poljima.

Ima li resenja ??
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja21.11.2007. u 12:37 - pre 200 meseci
> ima vise polje koja treba da budu brojevi,ali ne moraju da se unesu,tu nastaje greska pri unosu u bazu jer prazno 'numeric' poljene ne moze da se
> unese,onda bi trebao praviti IF uslov da proveri da li je polje prazno pa onda da ga unosi u bazu sto je malo komplikovanojer ima 10-tak polja
> Sve u svemu da sumiram,polja ne moraju da se unesu(brojevi) i pri stampi treba da bude prazno polje ako se nije ni unelo a da moze da se
> sabira sa ostalim poljima.

Mnogo si kofuzan.
Ako je polje deklarisano kao NOT NULL, znači da mu se mora uneti vrednost, ako nema NOT NULL konstrejt, onda prazno numeric polje može da se unese u bazu i i maće stanje NULL. Ako ti ne odgovara da ima NULL onda pri deklaraciju možeš navsti DEFAULT vrednost koju polje treba da dobije, s tim što u tom slučaju takvo polje treba da bude izostavljeno iz INSERT izraza (to uglavnom komponente rade same). Potom u samom Delphiu postoji TField.DefaultExpression koji se može koristiti za navođenje default vrednosti (ali će ona imati prednost nad onom iz baze).
Da li će se vrednost nekog polja prikazivati može se kontrolisati preko DisplayFormat svojstva, npr. ako je vrednost 0 prikaže se ''.
Agregante funkcije u FBu, slogove sa NULL ignorišu tako da SUM može da se koristi, kod aritmetičkih operacija je druga situacija i tu je NULL + nešto = NULL.
Ako sabiranje ili sumiranje vršiš na klijentu tu uglavnom neće biti problema i NULL se tretira kao 0.


 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja21.11.2007. u 16:19 - pre 200 meseci
>s tim što u tom slučaju takvo polje treba da bude izostavljeno iz INSERT izraza (to uglavnom komponente rade same)

O time pricam,polje nema NOT NULL konstrejt i nema default vrednost tako da moze da bude prazno, i kada radim INSERT dolazi do greske,

insert into podaci (id,broj,ime...) values ('+QuotedStr(KalkBr.text)+','+QuotedStr(Br.text)+','+QuotedStr(ime.text)+'....

i ako je polje 'Br.text' prazno izbaci gresku CONVERSION EROR FROM STRING ''''' zato sto se 'Br' nalazi u INSERTU a prazno je,

ima li tu neke pomoci ??
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.kalik.info.



Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja21.11.2007. u 16:51 - pre 200 meseci
Koristi parametre i vrednost iz TEdit kontrole konvertuj u brojčanu(Float, Integer, etc.).
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja21.11.2007. u 17:14 - pre 200 meseci
Milose nisam te razumeo,mislis strtofloat(Tedit.text) ali to ne ide u '+QuotedStr()+'

pretpostavljam da si mislio na nesto drugo.

Gledao sam DisplayFormat sto je rekao Igor ali nisam nasao kako se koristi sa DBGrid i Query,tj nasao sam nesto da se postavlja u Query CalcFields pa pretpostavljam da tamo ide IF =0 then '' ,dobro dosla bi jos koja pomoc.Ako je tako onda bi vrednost polja mogla da se stavi na defaul 0 ,u DBGrid-u se nece nista prikazivati a samim tim i u FastReport-u,bar bi trebalo tako biti.

[Ovu poruku je menjao Brkic dana 21.11.2007. u 18:37 GMT+1]
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja21.11.2007. u 20:03 - pre 200 meseci
> O time pricam,polje nema NOT NULL konstrejt i nema default vrednost tako da moze da bude prazno, i kada radim INSERT dolazi do greske,
> insert into podaci (id,broj,ime...) values ('+QuotedStr(KalkBr.text)+','+QuotedStr(Br.text)+','+QuotedStr(ime.text)+'....

Ne razumem te, ako nije uneta vrednost zašto onda to polje ubacuješ u INSERT? Jednostavno ga izostavi a u bazi stavi DEFAULT 0 i gotovo. Drugo pitanje je zašto ti sam konstruišeš INSERT i koristiš TEdit umesto TDBEdit odnosno drugih DB aware kontrola. Kao što sam ranije napisao, uglavnom komponente sve to same rade. Takođe možeš koristiti DefaultExpression.

> Gledao sam DisplayFormat sto je rekao Igor ali nisam nasao kako se koristi sa DBGrid i Query,tj nasao sam nesto da se
> postavlja u Query CalcFields pa pretpostavljam da tamo ide IF =0 then '' ,dobro dosla bi jos koja pomoc.
> Ako je tako onda bi vrednost polja mogla da se stavi na defaul 0 ,u DBGrid-u se nece nista prikazivati a samim tim i u FastReport-u,bar
> bi trebalo tako biti.

DisplayFormat je svojstvo TNumericField, kada napraviš kveri pređi u fields editor i dodaj sva polja i za numerička polja podesi DisplayFormat. Recimo da bi ti bilo prazno kod prikazivanja ako je vrednost 0 možeš staviti '#,##0.00;; '.
Kako i DisplayFormat je isti format koji koristi FormatFloat fukcija možeš pomoću nje isprobavati razne format varijante i kako utiču na formatiranje rezultata.
Npr.
Caption := FormatFloat('#,##0.00;; ', 434322);
Caption := FormatFloat('#,##0.00;; ', 0);
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja21.11.2007. u 21:09 - pre 200 meseci
>Ne razumem te, ako nije uneta vrednost zašto onda to polje ubacuješ u INSERT? Jednostavno ga izostavi
>Drugo pitanje je zašto ti sam konstruišeš INSERT i koristiš TEdit umesto TDBEdit

Poceo sam i tako nekako radim,verovatno nije najsretnije resenje kako mogu da zakljucim,a to je...
na Panelu napravim odredjen broj TEdit-a koliko tabela ima polja i dugme 'Snimi' u kojem je INSERT za sva polja po principu koji sam naveo.Tako da ne mogu da ga preskocim,tj mogao bih ako bih pravio IF za svaki TEdit i pisao drugaciji INSERT.
Zasto ne koritim TDBEdit ne znam,sada cu probati. Vidim da se u njemu odredi DadaSource i kako se onda vrsi upis u tabelu bez inserta ??

Sto se tice DisplayFormat-a,u kveri-u u fields editor-u radi samo NewField,kada napravim Field-ove nekih polja koja se nalaze u jednoj od tabela,podesio DisplayFormat i pokrenem program izbacuje gresku 'Field not found' .Kada sam uneo field-ove iz tabele iz koje sam vrsio selekciju onda je radilo ali kada sam selektovao iz druge tabele koja nema te Field-ove onda je izbacio istu gresku 'Field not found' ,da li treba uneti samo field-ove iz tabele preko koje se ce raditi sa tim Kveri-em,to mi je malo komplikovano jer imam 10 tabela
Moze li objasnjenje kako se sa njima radi ??

[Ovu poruku je menjao Brkic dana 21.11.2007. u 22:57 GMT+1]
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.kalik.info.



Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja21.11.2007. u 23:08 - pre 200 meseci
@Brkic
Citat:
Milose nisam te razumeo,mislis strtofloat(Tedit.text) ali to ne ide u '+QuotedStr()+'
pretpostavljam da si mislio na nesto drugo.

Vidi druže, ov je forum za Firebird, a ti treba u bazi polje da deklarišeš sa numeric(n,m), default 0, potom ako koristiš TEdit kontrole, treba uvesti parametre, nešto tipa(pišem za FIB i iz glave):
Code:

 with fibDataSet do
  begin
   Close;
   SelectSQL.CLear;
   SelectSQL.Add('insert into tabela values (:atribut1, :atribut2)'); 
    Params.ParamByName('atribut1').AsInteger := StrToInt(Edit1.Text);
    Params.ParamByName('atribut2').AsFloat := StrToFloat(Edit2.Text);
   Prepare;
   ExecSQL;
  end;

Mada, takođe bih predložio, kad god je to izvodljivo, korišćenje TDBEdit kontrola.
Citat:
Sto se tice DisplayFormat-a,u kveri-u u fields editor-u radi samo NewField,kada napravim Field-ove nekih polja koja se nalaze u jednoj od tabela,podesio DisplayFormat i pokrenem program izbacuje gresku 'Field not found' .Kada sam uneo field-ove iz tabele iz koje sam vrsio selekciju onda je radilo ali kada sam selektovao iz druge tabele koja nema te Field-ove onda je izbacio istu gresku 'Field not found' ,da li treba uneti samo field-ove iz tabele preko koje se ce raditi sa tim Kveri-em,to mi je malo komplikovano jer imam 10 tabela

Malo si konfuzan.
Ne znam da li sam te dobro razumeo, stoga se unapred izvinjavam ako te još zbunim. Napravi SQL upit, nebitan je broj tabela, u design time -u otvori taj set podataka tako da se prikaže u TDBGrid kontroli(sve to mora biti korektno povezano), potom dupli klik na TDBGrid kontrolu i dugme "Add All Fields", tako da ćeš u TDBGridu dobiti kolone koji si tražio select upitom. Dalje za svaku kolonu će biti dodato polje iz select upita, a za ta polja podesi opciju "DisplayFormat".
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja22.11.2007. u 11:29 - pre 200 meseci
> Sto se tice DisplayFormat-a,u kveri-u u fields editor-u radi samo NewField,kada napravim Field-ove nekih polja koja se nalaze u jednoj od tabela,
> podesio DisplayFormat i pokrenem program izbacuje gresku 'Field not found' .Kada sam uneo field-ove iz tabele iz koje sam vrsio selekciju onda je radilo
> ali kada sam selektovao iz druge tabele koja nema te Field-ove onda je izbacio istu gresku 'Field not found' ,da li treba uneti samo field-ove iz
> tabele preko koje se ce raditi sa tim Kveri-em,to mi je malo komplikovano jer imam 10 tabela Moze li objasnjenje kako se sa njima radi ??

Nije jasno šta si zapravo pitao, u svakom slučaju rad sa TField možeš naučiti iz knjiga, gledanjem demo primera koji dolaze uz Delphi i čitanjem helpa (recimo persistent fields je dobra tema).
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja22.11.2007. u 16:24 - pre 200 meseci
Da li sam u pravu ??

U Kveri1 sam u fields ubacio sva polja iz Tabele1,podesio DisplayFormat,kada vrsim selekciju peko Kveri1 iz Tabele1 sve radi OK (i to ako u selekciji imaju sva polja koja su u fields-u inace izbaci gresku), DisplayFormat radi OK.
Kada preko Kveri1 selektujem iz Tabele2 izbaci gresku.
Znaci li to da kada se podesi Fields u Kveri-u ne moze se preko njega vrsiti upit iz gruge tabele niti iz iste ako se u upitu ne koriste podeseni fields ??? Treba imati Kveria koliko i tabela da bi se radilo sa svim tabelama ??
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja22.11.2007. u 21:03 - pre 200 meseci
> Kada preko Kveri1 selektujem iz Tabele2 izbaci gresku.
> Znaci li to da kada se podesi Fields u Kveri-u ne moze se preko njega vrsiti upit iz gruge tabele niti iz iste ako se u upitu ne koriste
> podeseni fields ??? Treba imati Kveria koliko i tabela da bi se radilo sa svim tabelama ??

Ako koristiš persistent fields onda podešavanje DisplayFormata radiš u design timeu i tada su ta polja vezana za konkretni dataset. Ali ti ta polja možeš podesiti i u runtimu, recimo otvoriš kveri, prođeš kroz sva polja i ako je polje TNumericField dodeliš mu DisplayFormat.
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja22.11.2007. u 22:17 - pre 200 meseci
Kada sam podesio sve kako ste objasnili i sve funkcionise,treba da iscitam vrednost nekog fields-a i ne mogu. To sam ranije radio sa q1.FieldByName('firma').Asstring a sada izbacuje gresku da Fields 'firma not fount' isproavao sam neke druge mogucnosti ali uvek ista greska.
Ni FastReport nece da radi,isto izbacuje gresku, vuce podatak iz [q1.firma]

Imali resenja da se iscita vrednost nekog fields-a pod rednim brojem q1.recno... ??
Kako da definisem u FR ??

[Ovu poruku je menjao Brkic dana 22.11.2007. u 23:37 GMT+1]
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.kalik.info.



Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja22.11.2007. u 22:37 - pre 200 meseci
Da li ti se to polje nalazi u sql upitu na osnovu kojeg dobijaš taj set podataka?
Očigledno ti se javlja greška kao to polje ne postoji!?!
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.sbb.co.yu.



Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja22.11.2007. u 22:47 - pre 200 meseci
Da nalazi se u upitu,
upit je 'select firma from podaci' , i firma ima vrednost ali sa q1.FieldByName('firma').Asstring izbaci da 'field not found'
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja22.11.2007. u 23:13 - pre 200 meseci
> upit je 'select firma from podaci' , i firma ima vrednost ali sa q1.FieldByName('firma').Asstring izbaci da 'field not found'

Imaš samo jedno polje u tom resultsetu? Izvrši sledeći kod i videćeš tačan naziv polja.
Code:

ShowMessage(q1.Fields[0].FieldName);


 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Unosenje Integer-a kada je polje prazno i stampanje praznog integer polja

[ Pregleda: 3045 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

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