Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 20 odgovora
  • 5.048 pregleda

Najnovija ↓

NULL polja u bazi i Object Properties 14.03.2009. u 11:51 · pre 214 meseci #1
Koristim D2007 i FB bazu.

Da li postoji mogucnost da se prilikom pokretanja maske iscita struktura neke tabele iz baze i na osnovu toga da se odredjuju odredjena svojstva objekata.

NPR. Ako je u tabeli polje NOT NULL, da TDBEdit koji je vezan za to polje ima sledece svojstvo DBEdit1.Color:=clRed;

Ako postoji mogucnost, kako to da uradim i da li postoje neke restrikcije.

Hvala.
Re: NULL polja u bazi i Object Properties 14.03.2009. u 13:15 · pre 214 meseci #2
Naravno :-)

select r.rdb$field_name,
t.rdb$type_name,
f.rdb$field_length,
r.rdb$null_flag,
f.rdb$validation_source

from rdb$relation_fields r, rdb$types t, rdb$fields f

where r.rdb$relation_name='EMPLOYEE' and
f.rdb$field_name=r.rdb$field_source and
t.rdb$field_name='RDB$FIELD_TYPE' and
f.rdb$field_type=t.rdb$type;

if SQL.FieldByName('RDB$NULL_FLAG').IsNull then
DBEdit1.Color := clRed;
Potpis
F
Re: NULL polja u bazi i Object Properties 14.03.2009. u 13:24 · pre 214 meseci #3
A u koji deo koda ovo da stavim. Da li da postavim neku komponentu Query ili slicno. Kako da mi ovaj deo radi prilikom iscrtavanje maske (OnShow ili OnCreate npr.)?

Hvala
Re: NULL polja u bazi i Object Properties 14.03.2009. u 13:29 · pre 214 meseci #4
I jos nesto. Kako da kazem sledece:

Izaberi sve Edite na nekom panelu, i za sve koji su u bazi NULL stavi color Red, pa onda else color White.

Verovatno nekom petljom

for I:=0 to Panel1.Edit - 1 do
begin
end;

Hvala jos jednom.
Re: NULL polja u bazi i Object Properties 15.03.2009. u 18:54 · pre 214 meseci #5
Da, stavi jedan Query na formu i stavi mu taj upit.

A za sve edite u panelu napravi ovako nešto:

iz querya izvuci pomoću onog upita sve nazive polja koja imaju null vrijednost (stavi u where dio uvjet da je null) i onda ovako nekako:

query.First;
while not query.eof do
begin
for i := 0 to ComponentCount - 1 do
begin
if Components*i* is TDBEdit then
begin
if TDBEdit(Components*i*).DataField = FieldByName('Naziv_polja').AsString then
TDBEdit(Components*i*).Color := clRed else
TDBEdit(Components*i*).Color := clWhite;
end;
end;
Next;
end;

Može i "pametnije", ali i ovako će ti biti ok :-)

Nadam se da si skužio, ako ne, viči :-)

p.s. kada sam objavio post, vidim da mi ne prikazuje uglate zagrade, ali mislim da ćeš skužiti di dođu (staviti ću *)... :-)
Potpis
F
Re: NULL polja u bazi i Object Properties 16.03.2009. u 10:19 · pre 214 meseci #6
Napravi mi break na delu

FieldByName

greska je undeclared identifier.

U SQL-u sam naravno promenio ime baze sa EMPLOYEE na MOJABAZA, kako se i zove baza na kojoj ovo isprobavam.

F1
Re: NULL polja u bazi i Object Properties 16.03.2009. u 10:48 · pre 214 meseci #8
Izvini, moja greska. Ubacio sam i sada mi kompajlira i pokrece normalno, samo sto se nista ne desava, tj. da bih isprobao, stavio sam sve TDBEdite u sivu boju.
Kada pokrenem program, ostaje mi siva boja.

?
Re: NULL polja u bazi i Object Properties 16.03.2009. u 12:43 · pre 214 meseci #10
Hvala jos jednom, ali i dalje se nista ne menja.

Stavio sam:

if TDBEdit (Components).DataField = qBOJAPOLJA.FieldByName('RDB$NULL_FLAG').IsNull then
TDBEdit(Components).Color := clRed else
TDBEdit(Components).Color := clWhite;

Javlja mi Incompatible types 'WideString' and 'Boolean'

Probao sa da dodam i =True iza .IsNull ali i dalje prijavljuje gresku.

?
Re: NULL polja u bazi i Object Properties 16.03.2009. u 12:53 · pre 214 meseci #11
Ma krivo si napravio. U select query-a stavi samo select r.rdb$field_name
a u where dio dodaj where r.rdb$null_flag is null

kužiš?

tebaš izvaditi NAZIVE POLJA di je null_flag

i onda u petlju stavi

:= Query.FieldByName('NAZIV_POLJA').AsString


Potpis
F
Re: NULL polja u bazi i Object Properties 16.03.2009. u 13:23 · pre 214 meseci
izmenjeno 1 put, poslednji put savkic 16.03.2009. u 13:49
  1. savkic16.03.2009. u 13:49zapis iz teksta poruke
#12
Ja sam kod queryja u SQL stavio sledece:

Code:

select r.rdb$field_name, 
t.rdb$type_name,
f.rdb$field_length,
r.rdb$null_flag,
f.rdb$validation_source 

from rdb$relation_fields r, rdb$types t, rdb$fields f 

where r.rdb$relation_name='MOJA BAZA' and 
f.rdb$field_name=r.rdb$field_source and 
t.rdb$field_name='RDB$FIELD_TYPE' and 
f.rdb$field_type=t.rdb$type;

a onda OnFormShow sledece:

var
 i:Integer;
 begin
  qBOJAPOLJA.Close;
  qBOJAPOLJA.Prepare;
  qBOJAPOLJA.Open;
  while not qBOJAPOLJA.Eof do
   begin
     for i := 0 to ComponentCount - 1 do
      begin
        if Components[i] is TDBEdit then
         begin
           if TDBEdit (Components[i]).DataField = qBOJAPOLJA.FieldByName('NAZIV_POLJA').IsNull then
           TDBEdit(Components[i]).Color := clRed else
           TDBEdit(Components[i]).Color := clWhite;
         end;
      end;
     qBOJAPOLJA.Next;
   end;


Da li u where deo da dodam i

r.rdb$null_flag=NULL

?

EDIT - savkic: Koristi code tagove za ispisivanje koda, lakše je pratiti.
Re: NULL polja u bazi i Object Properties 16.03.2009. u 13:39 · pre 214 meseci #13
Skoro pa ti je ok :-)

da, u where dio sql upita dodaj where r.rdb$null_flag IS NULL

i pazi, u petlji promijeni ovo:

qBOJAPOLJA.FieldByName('NAZIV_POLJA').IsNull then

u ovo:

qBOJAPOLJA.FieldByName('NAZIV_POLJA').AsString then

Moraš paziti kako radiš provjere, jer u izrazu

if TDBEdit (Components).DataField = qBOJAPOLJA.FieldByName('NAZIV_POLJA').IsNull then

moraš za .DataField dati naziv polja, a ti mu tu stavljaš .IsNull.

Ispravi to i moralo bi raditi.

Ako ne, javi.
Potpis
F
Re: NULL polja u bazi i Object Properties 16.03.2009. u 13:53 · pre 214 meseci #14
Svo vreme grešiš kod dela koda koji prolazi kroz tvoje komponente na formi.

Zameni deo koda

Code:

if Components is TDBEdit then

sa
Code:

if Components[i] is TDBEdit then

i posle toga svugde gde ti se pominje Components zameni sa Components[ i ].

Inače, metod koji ti je izložio captPicard je jedan od više mogućih i nije baš najsrećnije rešenje. Moja preporuka ti je da iskoristiš ugrađene osobine DataSeta i Field objekata u njemu da bi postigao isti efekat na predviđeni način.

P.S.: Trudi se da programski kod stavljaš pod code tagove (imaš sa leve strane) radi boljeg formatiranja.

[Edit] Uh, sad videh da se ove uglaste zagrade nisu videle zbog toga što ti kod nije bio u code tagovima.
Potpis
"There is a theory which states that if ever anybody discovers exactly what the
Universe is for and why it is here, it will instantly disappear and be replaced by
something even more bizarre and inexplicable. There is another theory which states
that this has already happened."
-- Douglas Adams
Re: NULL polja u bazi i Object Properties 16.03.2009. u 14:06 · pre 214 meseci #15
Znam da je to samo jedno od rješenja, ali rekao sam mu da ima i "pametnijih" :-)

Hvala za savjet, nisam vidio ovo sa lijeve strane :-)
Potpis
F
Re: NULL polja u bazi i Object Properties 16.03.2009. u 15:02 · pre 214 meseci #16
Problem mi je izgleda sledeci:

select r.rdb$field_name,
t.rdb$type_name,
f.rdb$field_length,
r.rdb$null_flag,
f.rdb$validation_source

from rdb$relation_fields r, rdb$types t, rdb$fields f

where r.rdb$relation_name='MOJA_BAZA' and
f.rdb$field_name=r.rdb$field_source and
t.rdb$field_name='RDB$FIELD_TYPE' and
r.rdb$null_flag is NULL and
f.rdb$field_type=t.rdb$type;

mi ne vraca ni jedan rezultat.

?
Re: NULL polja u bazi i Object Properties 16.03.2009. u 15:41 · pre 214 meseci #18
To sam isprobao sam pre nego sto sam video post i SQL mi vraca rezultate, ali sada imam problem da mi ne vidi koja polja su null (tj. =1), vec mi sva polja oboji u belo.

Da li moram nekako posebno da definisem nazive TDBEdit polja ili je nesto drugo posredi?
Re: NULL polja u bazi i Object Properties 16.03.2009. u 15:56 · pre 214 meseci #19
select r.rdb$field_name naziv_polja,
t.rdb$type_name,
f.rdb$field_length,
r.rdb$null_flag,
f.rdb$validation_source

Si promjenio ovo

if TDBEdit (Components).DataField = qBOJAPOLJA.FieldByName('NAZIV_POLJA').IsNull

u

if TDBEdit (Components).DataField = qBOJAPOLJA.FieldByName('naziv_polja').AsString
Potpis
F
Re: NULL polja u bazi i Object Properties 16.03.2009. u 16:01 · pre 214 meseci #20
Napravio sam izmenu. U SQL editoru mi lepo vraca vrednosti. Problem je da te vrednosti upari sa delo IF NAZIV...
Tako da mi sva polja i dalje boji u belo.

?
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme