Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.18;
Скачать: CL | DM;

Вниз

DBLookupComboBox программное позиционирование?   Найти похожие ветки 

 
Matvey ©   (2002-10-28 21:18) [0]

Господа подскажите если знаете как програмно спозиционировать в DBLookupComboBox "указатель" у этого компонента к сожалению нет, да и не может быть свойства Items, а при заполнении его списком из БД он не позиуионируется, т.е. пользователь должен в любом соучае торкнуть мышой и начать выбор. К сожалению например Query1.First; ни к чему не приводят, ни каких свойст типа Select или MoveBy у DBLookupComboBox нет. Как это cделать???

Да и еще в догонку долго мучился как передать в запрос переменную типа String, пришел к выводу что делается это так

str:="WHERE TrackNumber=1" ;
Query1.sql.Add("SELECT * FROM Tracks "+str+"");

например, но в литературе натыкался на конструкцию типа WHERE=:qqq, где qqq - пременная типа string.
_______________________________________________
Проясните с синтаксисом пожалуста, кде и сколько кавычек ставить и знаков + ?


 
ЮЮ ©   (2002-10-29 09:37) [1]

1) Если DBLookupComboBox связан с полем НД (заполнены DataField и DataSource), то, естественно, надо первоначально установить какое-либо значение для этого поля, тогда оно и отразится.
Если же он не связан с полем НД, а используется только для выбора записей из ListSourсе, то тогда устанавливать значение KeyValue.
Сам предпочитаю RxDBLookupCombo, т.к. кроме позиционирования по KeyValue позволяет позиционироваться по Value b DisplayValue. Более того,там полезней интерфейс при автоинкрементном поиске по вводимым символам, особенно для пользователей, которые не могут "строчить" по клаве, как из пулемёта :-)

2)Конструкция WHERE=:qqq позволяет создавать параметрические запросы, что даёт значительный выигрыш при многократном использованнии (см.Prepere). Но изменять значение надо через Params. Вариант с изменением текста запроса Query1.sql.Add("SELECT * FROM Tracks "+str+""); вынуждает снова и снова компилировать запрос.


 
Johnmen ©   (2002-10-29 09:46) [2]

>ЮЮ © (29.10.02 09:37)

2) Безусловно, параметрический запрос предпочтительней...

>Вариант с изменением текста запроса Query1.sql.Add("SELECT *
>FROM Tracks "+str+""); вынуждает снова и снова компилировать
>запрос.

Ну и что такого ?




 
Victor_Cr ©   (2002-10-29 09:59) [3]

Для позиционирования я использую закладки:


procedure TLimitPower.FormShow(Sender: TObject);
var
BM: TBookmarkStr;
begin
qDate.Active := True;
// первоначальное заполнение dcbDate
while not qDate.Eof do
begin
if /запись надо отобразить первой/ then
BM := qDate.Bookmark;
dcbDate.Items.Append(qDateNM.AsString);
qDate.Next;
end;
qDate.Bookmark := BM;
end;

где qDate - TQuery
dcbDate - TDBScrollCombo связаный с qDate


 
ЮЮ ©   (2002-10-29 10:04) [4]

Johnmen © (29.10.02 09:46)
>Ну и что такого ?

Ну и ничего :-) Если это запрос для отображение Master-Detail, то, естественно, нужен "персональный" параметрический запрос, с выполненным Prepare. Если же это используется, например, для выборки по запросу пользователя, то текст запроса можно (и нужно)формировать динамически. Вот и всё :-)


 
Johnmen ©   (2002-10-29 10:22) [5]

>ЮЮ © (29.10.02 10:04)

Я не о том... Я про то, что препарирование будет сделано неявно в случае его неуказания...


 
ЮЮ ©   (2002-10-29 10:32) [6]

>препарирование будет сделано неявно в случае его неуказания...
А я о том, что каждый раз, при изменении текста запроса


 
Matvey ©   (2002-10-29 22:21) [7]

Всем спасибо я все понял :)



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

Текущий архив: 2002.11.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
4-59481
Beginer1
2002-10-07 16:35
2002.11.18
FindFirstFile


14-59416
gek
2002-10-23 13:48
2002.11.18
Наш ответ поклонникам C,и иже с ними


1-59108
Freeze
2002-11-08 07:49
2002.11.18
Как поварачивать рисунок на определенный градус


1-59085
Nick-From
2002-11-06 23:16
2002.11.18
Delphi + Prolog = Экспертная система


14-59359
Veronika
2002-10-29 08:42
2002.11.18
Как защитить книгу Excel от просмотра?