[delphi] baza danych big problem

0

Mam taki kod:

 ADOQuery1.SQL.Clear;
ADOQuery1.sql.Add('SELECT timeofrecord,Txutilization,rxutilization from STAT.PPC_STA_ATMPORT where timeofrecord=TO_DATE("2007-06-19 21:00:00","YYYY-MM-DD HH24:MI:SS") and componentname like "%POZ%"');
  ADOQuery1.Open;

i wyskakuje blad :

EOleException with message 'Unspecified error' Process stopped ...

a jak zrobie tak ze wpisze w ADOQuery w properitisach to samo zapytanie :

SELECT timeofrecord,Txutilization,rxutilization from STAT.PPC_STA_ATMPORT where timeofrecord=TO_DATE('2007-06-19 21:00:00','YYYY-MM-DD HH24:MI:SS') and componentname like '%POZ%'

i potem wywolam tylko zapytanie : ADOQuery1.Open;
to wszystko dziala idealnie !!

Nie rozumiem tego przeraza mnie to prosze o pomoc !!
Zdesperowany i bliski podciecia zyl
Marek ...

Ps. oczywiscie dane to wyswietlam na DBGridzie lacze sie z oraclem ...

0

F1 ?

0

co F1 ?

0
marekkuj napisał(a)

Mam taki kod:

 ADOQuery1.SQL.Clear;
ADOQuery1.sql.Add('SELECT timeofrecord,Txutilization,rxutilization from STAT.PPC_STA_ATMPORT where timeofrecord=TO_DATE("2007-06-19 21:00:00","YYYY-MM-DD HH24:MI:SS") and componentname like "%POZ%"');
  ADOQuery1.Open;

i wyskakuje blad :

EOleException with message 'Unspecified error' Process stopped ...

a jak zrobie tak ze wpisze w ADOQuery w properitisach to samo zapytanie :

SELECT timeofrecord,Txutilization,rxutilization from STAT.PPC_STA_ATMPORT where timeofrecord=TO_DATE('2007-06-19 21:00:00','YYYY-MM-DD HH24:MI:SS') and componentname like '%POZ%'

i potem wywolam tylko zapytanie : ADOQuery1.Open;
to wszystko dziala idealnie !!

Nie rozumiem tego przeraza mnie to prosze o pomoc !!
Zdesperowany i bliski podciecia zyl
Marek ...

Ps. oczywiscie dane to wyswietlam na DBGridzie lacze sie z oraclem ...

A w tym pierwszym przypadku dajesz podwójny cudzysłów: " czy dwa razy pojedynczy '' ?

0

podwójny ...

0
marekkuj napisał(a)

podwójny ...

I dlatego Ci nie działa :)
Zamiast podwójnego cudzysłowu użyj: '' <- dwa razy pojedyńczy. Albo skopiuj sobie ten tekst:

ADOQuery1.sql.Add('SELECT timeofrecord,Txutilization,rxutilization from STAT.PPC_STA_ATMPORT where timeofrecord=TO_DATE(''2007-06-19 21:00:00'',''YYYY-MM-DD HH24:MI:SS'') and componentname like ''%POZ%''');

0

Jeny Wodzu jak mam Ci dziekowac :) taka [CIACH!] i caly dzien pracy wpiz...
Dziekuje serdecznie Pozdrawiam i zycze zdrowia :)

MArek

0

Ciesze sie, ze moglem pomoc. Powodzenia przy Twoim projekcie :-)

0

To może jeszcze jedno pytanko : chcę posortować dane w DBGridzie ale nie chce tego robić poprzez wywolanie metody DBGridTitleClick bo przy tej wielkosci bazy danch trwa to za kazdym razem dosc dlugo.. czy jest jakis inny sposob zeby te dane posortowac? bez wykonywania za kazdym kliknieciem w title zapytania order by ?
Pozdrawiam

0
SELECT * FROM BAZA ORDER BY KOLUMNA;

Na końcu możesz dopisać ASC lub DESC (rosnąco/malejąco)

0
RedbaK napisał(a)
SELECT * FROM BAZA ORDER BY KOLUMNA;

Na końcu możesz dopisać ASC lub DESC (rosnąco/malejąco)

Napisał, że nie chce za każdym razem sortować.

marekkuj: a ile masz tych rekordów z ciekawosci zapytam? Nie przychodzi mi zaden sposob poza jednym (zakladam ze query jest zoptymalizowane):
Jesli masz w dbGridzie niewielka liczbe kolumn to moglbys posortowac sobie na pare sposobow (takich jak Ci potrzeba np po Imieniu, Nazwisku itd) a wyniki wrzucic do tabeli/tabelek tymczasowych. Nastepnie po kliknieciu na title danej kolumny, uzywac samego selecta na tabelce tymczasowej. Powinno byc szybciej. oczywiscie sprawa sie komplikuje gdy musisz cos wpisac do tabelki bo robisz update i na tabelce tymczasowej i na tej prawdziwej ale chyba nie jest to az tak wielki problem;)

Reasumujac:

-za pierwszym razem program zadziała wolniej bo bedziesz musiał posortowac to samo n razy (gdzie n - liczba potrzebnych Ci kolumn).
-zużyjesz n razy (?) wiecej pamieci.
-bedziesz musiał obsluzyc dodatkowo insert na oryginalnej tabeli.
+odczyt danych w dbGridzie bedzie szybszy.

Trza by sprawdzic o ile bedzie szybszy ten odczyt. Zapewne roznica bedzie rosnac ze wzrostem liczby elementow. Czy warto, sam ocen. ;)

0

Napisał, że nie chce za każdym razem sortować.

A gdzie tu jest za każdym razem?
Wrzuca w OnCreate i luz. Co się napinasz?

0

ClientDataSet

0
RedbaK napisał(a)

Napisał, że nie chce za każdym razem sortować.</quote>

A gdzie tu jest za każdym razem?
Wrzuca w OnCreate i luz. </quote>

chcę posortować dane w DBGridzie ale nie chce tego robić poprzez wywolanie metody DBGridTitleClick bo przy tej wielkosci bazy danch trwa to za kazdym razem dosc dlugo..

Moze tutaj? ;-)

RedbaK napisał(a)

Co się napinasz?

Boze bron;-) Chodzi o to, ze on dla tej samej tabeli chce sortowac wyniki wielokrotnie w zaleznosci od klikniecia na title danej kolumny.

0

Zrobilem jak Wodzu radzil i pomoglo :) jest idealnie genialnie :) bedzie premia :P
Dzieki :) !

0

Ok, to tak jak powiedzial Misiekd: TClientDataSet + Sorting records with indexes w Delphi Help.

Po edycji:
Hehe zmienilesc tresc posta ;-)

To polowa premii dla mnie;-) bo niestety u mnie w pracy czegos takiego jeszcze nie doswiadczylem... :|

0

mozemy sie umowic na piwko albo cztery ;)

0

W ADO jest takie cuś jak ADODataSet, które to cuś ma coś takiego jak IndexFieldName /czyli uproszczona wersja propozycji Misiekd/

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