Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Вниз

Poisk zapisi v Interbase table   Найти похожие ветки 

 
Alexei Sviridov   (2003-05-30 22:41) [0]

Dobroe vremja sutok...Podskazhite kak b tablice Interbase bistro opredelit suschestvuet li zapis i esli da to bistro k nej peremestitsja.
Na danni moment ja delaju tak:
countquery:=TIBQuery.Create(owner);
countquery.Database:=dm.DB;
importquery.close;
importquery.sql.add("select * from stocklistwhere upper(code)=:param0");
importquery.open;
countquery.SQL.Add("select count(code) from stocklist where upper(code)=:param0");
if countquery.Fields[0].Value<>0
then importquery.edit
else importquery.insert.... i t.d.
Pri bolshom ob"eme dannih poisk odnoj zapisi( code - Primary Key) eto navernoe daleko ne samij elegantnij algoritm, mozhet kto-to podskazhet chto-nibud?


 
Zacho   (2003-05-30 23:04) [1]


> Alexei Sviridov (30.05.03 22:41)

Все гораздо проще :-)
importquery.sql.add("select * from stocklistwhere upper(code)=:param0");
importquery.open;
if importquery.Locate("code",code,[]) then
begin
importquery.Edit;
...
end else
begin
importquery.insert;
....
end
Здесь второй параметр в Locate - нужное значение PK.


 
Avreliy   (2003-05-30 23:08) [2]

При использовании BDE можно попробывать табличный метод
FindKey(). Можеть быть можно и для IBX-таблиц?


 
Dred2k   (2003-05-30 23:11) [3]

Для "серверных" датасетов все одно...
Хотя, реализация бывает разной.


 
Alexei Sviridov   (2003-05-30 23:30) [4]

To Zacho
VSe bi horosho, no Locate ne katit. Locatom u menja do etogo rabotalo. No problema v tom chto v baze 110 000 records i pri metode LOcate nabljudajutsja bolshie tormoza!!!


 
Zacho   (2003-05-30 23:30) [5]

Что-то я не сразу сообразил, что именно надо. Можно еще проще:
importquery.sql.add("select * from stocklistwhere upper(code)=:param0");
importquery.open;
if importquery.IsEmpty then
begin
importquery.Insert;
...
end else
begin
importquery.Edit;
....
end

Но я бы сделал хранимую процедуру. Или VIEW с триггерами, в зависимости от задачи.


 
Zacho   (2003-05-30 23:33) [6]


> Alexei Sviridov (30.05.03 23:30)

Судя по запросу - этого не может быть. Если code - PK то запрос должен возвращать всего одну запись, и Locate тормозить просто не может.


 
Alexei Sviridov   (2003-05-31 01:04) [7]

>Zacho
Code dejstvitelno PK. A Locate ne budet tormozit tolko v tom sluchae esli stocklist.FetchAll - chto samo po sebe emkaja zadacha (110 000 records). Spasibo


 
Zacho   (2003-05-31 01:29) [8]


> Alexei Sviridov (31.05.03 01:04)

Да собственно дело в том, что приведенный тобой запрос должен выбирать только одну запись. А в этом случае тормозить Locate никак не может.
И еще раз скажу: для такой цели (UPDATE записи если она есть, или INSERT если нет) я бы предпочел ХП.


 
Alexei Sviridov   (2003-05-31 02:03) [9]

Prostite za glupij vopros: a chto takoe "ХП"?


 
VMcL   (2003-05-31 04:10) [10]

>Alexei Sviridov (31.05.03 02:03)
>Prostite za glupij vopros: a chto takoe "ХП"?

Судя по постам, "ХП" - хранимая процедура.


 
Alexei Sviridov   (2003-05-31 05:07) [11]

> VMcL
Spasibo, k etomu vremeni ja uzhe perepisal modul s ХП.
Vot gde ona sila SQL"evskaja. Spasibo vsem



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.024 c
14-84620
Сатир
2003-06-02 14:15
2003.06.26
---|Ветка была без названия|---


1-84270
Project111
2003-06-14 11:21
2003.06.26
Version info


1-84104
Zemal
2003-06-10 11:30
2003.06.26
Как определить объём занимаемой приложением памяти?


6-84500
SergeyI
2003-04-23 11:50
2003.06.26
WinSocket. Как узнать что послано текст или данные ?


14-84683
Vlad Oshin
2003-06-10 15:58
2003.06.26
А никто не вылавливал данные из миниАТС?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский