delphi +interbase

0
 Witam. Ostatnio probuje moich sil w robieniu programow do obslugi baz danych w delphi ale ze jestem poczatkujacym programista to mam kilka problemow, ktore mam nadzieje pomozecie mi rozwiazac.

1. powiedzmy ze chcem wyswietlic rekordy ktore ujalem w kodzie SQL IBQuery,stworzony jest tam jeden parametr, ktory odwoluje sie do dbcomboboxa  kod wyglada nastepujaco :

IBQuery.Params[0].AsString:=DBLookupComboBox1.Text;

no i to dziala po wybraniu pewnej rzeczy w comboboxie wyswietla mi sie to czego szukam.
chcialbym jednak zrobic tak aby wyswietlaly mi sie rzeczy nie po wybraniu cos z comboboxa lecz po wybraniu pewnego rekordu z DBGrida, ktory bedzie sie laczyl z parametrem IBQuery tak jak combobox. ten parametr to powiedzmy NR_KONCERTU. i mialem wlasnie wypelniony combobox wszystkimi numerami koncertu i powybraniu danego wyswietlaly i sie szcegolowe informacje. jednak teraz chcem nacisnac na dany rekord wdbgridzie i aby wyswietlalo sie to samo. w tym gridzie jedna z kolumn to wlasnie NR_KONCERTU. jak mam zmienic powyzszy kod???

IBQuery.Params[0] << to napewno ale czym jest to assstring i jak powinienem je zmienic?? po przypisaniu dajemy nazwe grida czyli np DBGrid1 no i co po kropce???text chyba nie bedzie dzialac zreszta tu tez mam dylemat co to dokladnie jest???

no i ktore zdarzenie w gridzie mam oprogramowac??? OnCellClick??? czy inny?

2.moj drugi problem to chyba nie cos trudnego jednak kompletnie nei wiem co mam zmienic. mam DBMemo wpisuje pewna fraze i w gridzie obok wyswietla mi sie to o chcem.i wszystko dziala tylko jedyny mankament to to ze musze do tekstu co tam jest domyslnie, dopisac ten ktory chchem szukac, a stary domyslny zmazac, wtedy szuka i wyswietla.jednak nie moge sobie na wstepie wyczyscic pola DBMemo gdyz wyskakuje mi od razu blad i wylacza sie program.co zrobic zeby tak sie nie dzialo???

z gory dzieki za pomoc!!!
0
  1. DBGrid tylko wyświetla dane, musisz odwołać się do źródła danych, np. jakoś tak
    IBQuery.Params[0].AsString := IBQueryPolaczoneZDbGridem.Values['NR_KONCERTU'];
    Nazwa NR_KONCERTU sugeruje że pole jest typu Integer więc może zamiast AsString powinno być AsInteger

Może zdarzenie DBGrid1DblClick.

0

ups :/
IBQuery.Params[0].AsString := IBQueryPolaczoneZDbGridem.FieldValues['NR_KONCERTU'];

0

http://www.delphi3000.com/articles/article_540.asp?SK= tylko POMYŚL najpierw i wstaw SWOJE SQLe
a na przyszłość to się nazywa Master-Detail

0

ok zrobilem, ale wyskakuje mi blad ze >>>IBQuery Field 'NR_KONCERTU' not found<<<. to blad wychodzacy z programu czy z bazy??...to pole na pewno sie tak nazywa i istnieje, ale to wyglada na to jakby bylo zupelnie inaczej...ale sprawdzilem na innych tabelach ta metode i dziala. gdzie mam szukac bledu????

Pozdro!

0

co zrobiłeś???

0

no zrobilem ta metoda co podales patrz post wyzej:D...

0

no to super to może teraz dla odmiany zamiast kazać nam się domyślać/korzystać z usług jasnowidza napiszesz np. jakie pola mają zainteresowane tabele i jakie SQLe wpisałeś do poszczególnych guery

0

to tak o:
Polaczylem dwie tabele (Koncerty, kapele) na zasadzie "many to many" no i stworzyla mi sie nowa tabela (numery_kapel) pomiedzy nimi

to moje tabele:

table Kapele (
Nr_kapeli INTEGER not null,
Nazwa_kapeli VARCHAR(20) not null,
Styl_muzyczny VARCHAR(20) not null,
constraint PK_KAPELE primary key (Nr_kapeli)
);

table Koncerty (
Nr_koncertu INTEGER not null,
Nr_skladu INTEGER not null,
Data_koncertu DATE not null,
Miasto VARCHAR(20) not null,
Miejsce VARCHAR(20) not null,
constraint PK_KONCERTY primary key (Nr_koncertu)
);

table Numery_kapel (
Nr_koncertu INTEGER not null,
Nr_kapeli INTEGER not null,
constraint PK_NR primary key (Nr_koncertu, Nr_kapeli)

IBQuery1 "select * from koncerty"
IBQuery2 "select a.nazwa_kapeli, a.styl_muzyczny from kapele a join numery_kapel b on a.nr_kapeli=b.nr_kapeli where b.nr_koncertu=:Nr_koncertu"
Datasource1.DataSet.IBQuery1
DataSource2.DataSet.IBQuery2

no i w IBQuery2.DataSource wybralem Datasource1

nie mam dalej pojecia gdzie moze byc blad?:/

0

najpierw MUSISZ otworzyć ibquery1 a dopiero POTEM ibquery2

0

ok juz dziala:)...wielkie dzieki za pomoc!

jeszcze chcialem was zapytac o DBMemo.gdzie sie ustawia aby mozna bylo w programie wprowadzac tekst do tego komponentu???...

powiedzmy ze w IBQuery2 odznaczylem w DataSource i nie ma juz patentu master-detail. chcĘ teraz aby w DBMemo wpisac nr_koncertu ktory bedzie laczyl sie z parametrem z kodu SQL IBQuery2 .

-w IBQuery2 ten sam SQL
-wrzucam DBMemo w DataSource wybieram DataSource1
-w DataField wybieram NR_koncertu

  • MaxLength zwiekszam do 10
  • w DBMemo w zdarzeniu OnChange wpisuje

IBQuery2.Close;
IBQuery2.Params[0].AsString:=DBMemo1.Text;
IBQuery2.Open;

i kiedys mi to dzialalo z jednym malym mankamentem...nie moglem wyczyscic pola, bo wyskakiwal mi blad i po programie. dopiero jak np domyslnie byl numer koncertu 2, a ja chcialem wybrac 6 to do tej dwojki musialem dopisac 6 i mialem 26 po czym musialem usunac dwojke. teraz nie wiem czemu w ogóle nie moge nic wpisywac do DBMemo. wiecie moze jak zrobic aby mozna bylo wpisywac tekst i aby nie wyskakiwal blad po wyczyszczeniu pola????

z gory dzieki!!!

0

to tak nie działa - poczytaj jakieś podstawy

0

A moze jakas podpowiedz???...bo kompletnie nie wiem jak ruszyc to DBMemo.jak wrzucam normalne Memo to mozna pisac od razy a w DB nie mozna nic...pomoze mi ktos bo siedze nad tym juz kilka dni i nic:/???

1 użytkowników online, w tym zalogowanych: 0, gości: 1