Thread View: pl.comp.lang.delphi.bazy-danych
12 messages
12 total messages
Started by Radek Wroblewski
Tue, 13 Apr 1999 16:32
TQuery a TTable (aktualizacja) - pilne!
Author: Radek Wroblewski
Date: Tue, 13 Apr 1999 16:32
Date: Tue, 13 Apr 1999 16:32
20 lines
1478 bytes
1478 bytes
Witam, Mam TQuery, ktorego zawartosc po wykonaniu zapytania do tablicy TABLE_ZAM jest wyswietlana w DBGrid. Chce teraz, zeby program po kliknieciu przez uzytkownika na wybranym rekordzie w DBGrid'zie automatycznie ustawil w TTable dla TABLE_ZAM ten sam rekord jako biezacy. Przypuszczam, ze nalezy to zrobic w OnAfterScroll dla TQuery. Tylko, ze nie wiem co. Przepatrzylem helpa w poszukiwaniu przydatnych pod tym katem metod i znalazlem tylko GotoCurrent, ale to nie dziala dla TQuery. Czy da sie to zrobic w miare automatycznie, czy musze uzyc SETKEY, GOTOKEY przy wczesniejszym ustawieniu odpowiedniego indeksu i szukac po zawartosci dla biezacego rekordu z TQuery ? Pozdrawiam, Radek.
Re: TQuery a TTable (aktualizacja) - pilne!
Author: Traptak
Date: Tue, 13 Apr 1999 21:18
Date: Tue, 13 Apr 1999 21:18
18 lines
1253 bytes
1253 bytes
Radek Wroblewski <radekw@friko3.onet.pl> napisał(a) w artykule
<371372ac.0@news.vogel.pl>...
> Witam,
>
> Mam TQuery, ktorego zawartosc po wykonaniu zapytania do tablicy
> TABLE_ZAM jest wyswietlana w DBGrid.
>
> Chce teraz, zeby program po kliknieciu przez uzytkownika na
> wybranym rekordzie w DBGrid'zie automatycznie ustawil w TTable
> dla TABLE_ZAM ten sam rekord jako biezacy.
> (...)
Proponuje użyć metody Locate. Wystarczyło by chyba tak:
TTable.Locate('ID', TQuery.FieldByName('ID'), []);
Traptak
Re: TQuery a TTable (aktualizacja) - pilne!
Author: Radek Wroblewski
Date: Wed, 14 Apr 1999 09:34
Date: Wed, 14 Apr 1999 09:34
45 lines
2935 bytes
2935 bytes
>> Chce teraz, zeby program po kliknieciu przez uzytkownika na >> wybranym rekordzie w DBGrid'zie automatycznie ustawil w TTable >> dla TABLE_ZAM ten sam rekord jako biezacy. >> (...) > >Proponuje użyć metody Locate. Wystarczyło by chyba tak: Ze tez na to nie wpadlem. Dzieki! Ale... To niestety nie rozwiazuje problemu. Wlozylem to do zdarzenia AfterScroll dla TQuery. Niestety to zdarzenie wywolywane jest nie tylko przy zmianie aktualnego rekordu, ale rowniez podczas wykonywania zapytania SQL. Nie bede pisal cos sie dzieje przy Locate dla kazdego kolejnego rekordu zwroconego z zapytania :-( Pytanie, czy jest moze jakies property, dzieki ktoremu mozna sprawdzic, ze zapytanie juz zostalo wykonane ? Wtedy w AfterScroll mialbym tylko warunek sprawdzajacy czy zapytanie jest wykonane i dopiero wtedy wywolywalbym Locate. A dokladniej cala sprawa wyglada tak: Jest DataModule. Tam jest TTable z TDataSrc oraz TQuery z TDataSrc. Jest okno glowne programu, ktory uzywa komponentow nie-DBGrid tylko zwyklych TEditow i innych (akurat tak musialem). Dla TTable mam zdarzenie AfterScroll, ktore aktualizuje pola tych Editow na glownej formie. To dziala. Jest jednak i drugie okienko z DBGrid'em, ktore w zaleznosci od wyboru wyswietla albo TTable w pelnej postaci albo to co jest wynikiem zapytania dla TQuery. To dziala ok. Chce jednak, zeby po wykonaniu zapytania i wyswietleniu w DBGrid jego wynikow, wybieranie wierszy z DBGrida powodowalo ustawienie rekordu w TTable na rekord z TQuery aktualnie wybrany w DBGrid, a co za tym idzie wypelnienie pol na glownej formie. To tez jest proste do zrobienia poprzez AfterScroll dla TQuery, lecz moj problem polega na tym, ze AfterScroll dla TQuery jest wywolywany dla kazdego rekordu dodawanego do DBGrida podczas wykonywania zapytania. Jak wiec zabezpieczyc sie przed tym? A moze jest jakis inny sposob na synchronizacje rekordow z TQuery i TTable ? Acha, TTable i TQuery odwoluja sie do tej samej bazy danych (Paradox). Prosze o pomoc... Pozdrawiam, Radek
Re: TQuery a TTable (aktualizacja) - pilne!
Author: Radek Wroblewski
Date: Wed, 14 Apr 1999 09:42
Date: Wed, 14 Apr 1999 09:42
45 lines
2986 bytes
2986 bytes
>> Chce teraz, zeby program po kliknieciu przez uzytkownika na >> wybranym rekordzie w DBGrid'zie automatycznie ustawil w TTable >> dla TABLE_ZAM ten sam rekord jako biezacy. >> (...) > >Proponuje użyć metody Locate. Wystarczyło by chyba tak: Ze tez na to nie wpadlem. Dzieki! Ale... To niestety nie rozwiazuje problemu. Wlozylem to do zdarzenia AfterScroll dla TQuery. Niestety to zdarzenie wywolywane jest nie tylko przy zmianie aktualnego rekordu, ale rowniez podczas wykonywania zapytania SQL. Nie bede pisal cos sie dzieje przy Locate dla kazdego kolejnego rekordu zwroconego z zapytania :-( Pytanie, czy jest moze jakies property, dzieki ktoremu mozna sprawdzic, ze zapytanie juz zostalo wykonane ? Wtedy w AfterScroll mialbym tylko warunek sprawdzajacy czy zapytanie jest wykonane i dopiero wtedy wywolywalbym Locate. A dokladniej cala sprawa wyglada tak: Jest DataModule. Tam jest TTable z TDataSrc oraz TQuery z TDataSrc. Jest okno glowne programu, ktory uzywa komponentow nie-DBGrid tylko zwyklych TEditow i innych (akurat tak musialem). Dla TTable mam zdarzenie AfterScroll, ktore aktualizuje pola tych Editow na glownej formie. To dziala. Jest jednak i drugie okienko z DBGrid'em, ktore w zaleznosci od wyboru wyswietla albo TTable w pelnej postaci albo to co jest wynikiem zapytania dla TQuery. To dziala ok. Chce jednak, zeby po wykonaniu zapytania i wyswietleniu w DBGrid jego wynikow, wybieranie wierszy z DBGrida powodowalo ustawienie rekordu w TTable na rekord z TQuery aktualnie wybrany w DBGrid, a co za tym idzie wypelnienie pol na glownej formie. To tez jest proste do zrobienia poprzez AfterScroll dla TQuery, lecz moj problem polega na tym, ze AfterScroll dla TQuery jest wywolywany dla kazdego rekordu dodawanego do DBGrida podczas wykonywania zapytania. Jak wiec zabezpieczyc sie przed tym? A moze jest jakis inny sposob na synchronizacje rekordow z TQuery i TTable ? Acha, TTable i TQuery odwoluja sie do tej samej bazy danych (Paradox). Prosze o pomoc... Pozdrawiam, Radek
Re: TQuery a TTable (aktualizacja) - pilne!
Author: Krzysztof Szyszka
Date: Wed, 14 Apr 1999 10:51
Date: Wed, 14 Apr 1999 10:51
19 lines
1476 bytes
1476 bytes
Radek Wroblewski napisał(a) w wiadomości: <3714641b.0@news.vogel.pl>... > >>> Chce teraz, zeby program po kliknieciu przez uzytkownika na >>> wybranym rekordzie w DBGrid'zie automatycznie ustawil w TTable >>> dla TABLE_ZAM ten sam rekord jako biezacy. >>> (...) [ciach] A nie prościej połączyć TQuery z TTable w relację Master->Detail po unikalnym polu ? -- pozdrowienia Krzysztof ====================== Krzysztof Szyszka e-mail: kszyszka@priv.onet.pl ICQ: 13241014 ======================
Re: TQuery a TTable (aktualizacja) - pilne!
Author: Radek Wroblewski
Date: Wed, 14 Apr 1999 11:06
Date: Wed, 14 Apr 1999 11:06
9 lines
1298 bytes
1298 bytes
>>>> wybranym rekordzie w DBGrid'zie automatycznie ustawil w TTable >>>> dla TABLE_ZAM ten sam rekord jako biezacy. > >A nie prościej połączyć TQuery z TTable w relację Master->Detail po >unikalnym polu ? Przepraszam za lamerstwo, ale jak to zrobic ? Unikalny jest np. USER_ID. Rafal.
Re: TQuery a TTable (aktualizacja) - pilne!
Author: Krzysztof Szyszka
Date: Wed, 14 Apr 1999 12:38
Date: Wed, 14 Apr 1999 12:38
21 lines
1714 bytes
1714 bytes
Radek Wroblewski napisał(a) w wiadomości: ... >>>>> wybranym rekordzie w DBGrid'zie automatycznie ustawil w TTable >>>>> dla TABLE_ZAM ten sam rekord jako biezacy. >> >>A nie prościej połączyć TQuery z TTable w relację Master->Detail po >>unikalnym polu ? > >Przepraszam za lamerstwo, ale jak to zrobic ? Unikalny jest np. USER_ID. Ustawić dla TTable MasterSource na DataSource podpietego do TQuery oraz MasterFields na USER_ID. Tabela podpięta do TTable powinna mieć założony indeks na polu USER_ID. I wszycho. -- pozdrowienia Krzysztof ====================== Krzysztof Szyszka e-mail: kszyszka@priv.onet.pl ICQ: 13241014 ======================
Re: TQuery a TTable (aktualizacja) - pilne!
Author: Radek Wroblewski
Date: Wed, 14 Apr 1999 12:54
Date: Wed, 14 Apr 1999 12:54
23 lines
1770 bytes
1770 bytes
Witam, >Ustawić dla TTable MasterSource na DataSource podpietego do TQuery >oraz MasterFields na USER_ID. Tabela podpięta do TTable powinna mieć >założony indeks na polu USER_ID. I wszycho. Robilem to juz wczesniej i nic. Dlatego pytalem. Robilem to w DesignTime na DataModule. W ObjIns w DesignTime wybieram MasterSource i nie ma tam nic na liscie ! Zaznaczam, ze w tym DataModule mam TTAble z TDataSrc i TQuery ze swoim TDataSrc. A moze to trzeba robic podcza uruchomienia z kodu ? Probowalem w Design Time przy ustawionych Active dla TTAble i TQuery i nadal w MasterSource dla TTable nic nie widac. Na USER_ID mam key index. No Krzysiek, pomozesz ? Pozdrawiam, Rafal
Re: TQuery a TTable (aktualizacja) - pilne!
Author: Krzysztof Szyszka
Date: Wed, 14 Apr 1999 20:21
Date: Wed, 14 Apr 1999 20:21
32 lines
1972 bytes
1972 bytes
Radek Wroblewski napisał(a) w wiadomości: ... >Witam, > >>Ustawić dla TTable MasterSource na DataSource podpietego do TQuery >>oraz MasterFields na USER_ID. Tabela podpięta do TTable powinna mieć >>założony indeks na polu USER_ID. I wszycho. > >Robilem to juz wczesniej i nic. Dlatego pytalem. Robilem to w DesignTime na >DataModule. W ObjIns w DesignTime wybieram MasterSource i nie ma tam nic na >liscie ! > >Zaznaczam, ze w tym DataModule mam TTAble z TDataSrc i TQuery ze swoim >TDataSrc. > >A moze to trzeba robic podcza uruchomienia z kodu ? Probowalem w Design Time >przy ustawionych Active dla TTAble i TQuery i nadal w MasterSource dla >TTable nic nie widac. > >Na USER_ID mam key index. > >No Krzysiek, pomozesz ? Mam nadzieję, że pomogłem (na priva). -- pozdrowienia Krzysztof ====================== Krzysztof Szyszka e-mail: kszyszka@priv.onet.pl ICQ: 13241014 ======================
Re: TQuery a TTable (aktualizacja) - SUKCES!
Author: Radek Wroblewski
Date: Wed, 14 Apr 1999 22:14
Date: Wed, 14 Apr 1999 22:14
17 lines
1544 bytes
1544 bytes
>>Na USER_ID mam key index. > >Mam nadzieję, że pomogłem (na priva). Wielkie dzieki! Dziala! Wyjasniam co bylo przyczyna. Ustawilem DataSource dla TQuery na DataSource, ktore mialo jako DataSet to samo TQuery. Wykasowalem to pole i w Mastersource odrazu cos sie pojawilo. Potem to juz byla kaszka z mlekiem. Teraz wszystko smiga jak nalezy ! A propos, do czego sluzy ten DataSource dla TQuery ? Jeszcze raz dziekuje. Pozdrawiam, Radek
Re: TQuery a TTable (aktualizacja) - SUKCES!
Author: Krzysztof Szyszka
Date: Thu, 15 Apr 1999 05:14
Date: Thu, 15 Apr 1999 05:14
27 lines
1950 bytes
1950 bytes
Radek Wroblewski napisał(a) w wiadomości: ... >>>Na USER_ID mam key index. >> >>Mam nadzieję, że pomogłem (na priva). > >Wielkie dzieki! Dziala! Wyjasniam co bylo przyczyna. >Ustawilem DataSource dla TQuery na DataSource, >ktore mialo jako DataSet to samo TQuery. Wykasowalem >to pole i w Mastersource odrazu cos sie pojawilo. Potem >to juz byla kaszka z mlekiem. Teraz wszystko smiga jak >nalezy ! > >A propos, do czego sluzy ten DataSource dla TQuery ? Mniej więcej do tego samego, co MasterSource dla TTable - pozwala utworzyć relację Master->Detail dla TQuery, a dokładniej, to pozwala na pobranie parametrów do zapytania z innego TQuery lub TTable. -- pozdrowienia Krzysztof ====================== Krzysztof Szyszka e-mail: kszyszka@priv.onet.pl ICQ: 13241014 ======================
Re: TQuery a TTable (aktualizacja) - pilne!
Author: Maciej "MACiAS" Pilichowski
Date: Thu, 15 Apr 1999 07:41
Date: Thu, 15 Apr 1999 07:41
16 lines
1296 bytes
1296 bytes
Hej,
>Czy da sie to zrobic w miare automatycznie, czy musze uzyc
>SETKEY, GOTOKEY przy wczesniejszym ustawieniu odpowiedniego
>indeksu i szukac po zawartosci dla biezacego rekordu z TQuery ?
Tak jak Ci podal Traptak, chyba, ze na 100% wiesz ze to Table i Query
to jest 1:1 /i takie samo ulozenie/. Wtedy jedziesz po rekordach.
milego dnia zycze
hej
--
Maciej "MACiAS" Pilichowski http://www.torun.pdi.net/~macias/
nowe klamoty w kwietniu: nowe bookmarki o DVD
S P R Z E D A M : oryginalne gry HalfLife i Thief, streamer Jumbo250,
lornetke z zoomem, segment CD Technics, przeciwsloneczne okulary sportowe
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads