Форум: "Базы";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c