🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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!
#241
Author: Radek Wroblewski
Date: Tue, 13 Apr 1999 16:32
20 lines
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!
#242
Author: Traptak
Date: Tue, 13 Apr 1999 21:18
18 lines
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!
#243
Author: Radek Wroblewski
Date: Wed, 14 Apr 1999 09:34
45 lines
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!
#251
Author: Radek Wroblewski
Date: Wed, 14 Apr 1999 09:42
45 lines
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!
#244
Author: Krzysztof Szyszka
Date: Wed, 14 Apr 1999 10:51
19 lines
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!
#245
Author: Radek Wroblewski
Date: Wed, 14 Apr 1999 11:06
9 lines
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!
#246
Author: Krzysztof Szyszka
Date: Wed, 14 Apr 1999 12:38
21 lines
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!
#247
Author: Radek Wroblewski
Date: Wed, 14 Apr 1999 12:54
23 lines
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!
#248
Author: Krzysztof Szyszka
Date: Wed, 14 Apr 1999 20:21
32 lines
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!
#249
Author: Radek Wroblewski
Date: Wed, 14 Apr 1999 22:14
17 lines
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!
#250
Author: Krzysztof Szyszka
Date: Thu, 15 Apr 1999 05:14
27 lines
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!
#252
Author: Maciej "MACiAS" Pilichowski
Date: Thu, 15 Apr 1999 07:41
16 lines
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