Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#1: 2009-03-02 10:32:41 ЛС | профиль | цитата
Вопс к Автору компонента: Что SQLite_QueryScalar делает такое, что не возможно сделать, используя SQLite_Query

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
vip
#1.1контекстная реклама от партнеров
Администрация
Ответов: 15294
Рейтинг: 1518
#2: 2009-03-02 10:40:34 ЛС | профиль | цитата
Tad писал(а):
не возможно

получить onQuery при отсутствие данных после выполнения запроса
карма: 26
0
Ответов: 16884
Рейтинг: 1239
#3: 2009-03-02 10:55:25 ЛС | профиль | цитата
Перед выполнением основного запроса выполнить

Select count() from %1 where колонка='%2'
и если <>0 выполнять основной запрос. Добавляется один If_else
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Администрация
Ответов: 15294
Рейтинг: 1518
#4: 2009-03-02 11:19:44 ЛС | профиль | цитата
Tad, я чего-то не могу представить себе кусок схемы, конструирующий запрос по маске, выполняющий этот запрос, проверяющий результат его работы и использующий только один элемент If_else. Пример можно?
карма: 26
0
Ответов: 16884
Рейтинг: 1239
#5: 2009-03-02 11:51:37 ЛС | профиль | цитата
Вот - Программа для обновления Elements.db из Elements.sql (защита от удаления личных компонент )
Пример немного великоват, но остальные еще покрупнее
code_11986.txt

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_11986.txt [18.5KB] [492]
Администрация
Ответов: 15294
Рейтинг: 1518
#6: 2009-03-02 11:53:28 ЛС | профиль | цитата
чтобы закончить на этом бессмысленное обсуждение добавлю: использовать существующее поведение SQLite_Query для получения одного значения глупо и громоздко. Вариантов решения проблемы было два - сделать свойство, которое позволит возвращать только одно значение даже если его не удалось получить, или сделать отдельный элемент для этих целей. Поскольку раздел SQLite не содержит большого числа элементов(и не планируется), то рузумнее было выбрать второй вариант, который при прочих равных условий вносит в конечную схему большую наглядность
карма: 26
0
Ответов: 2125
Рейтинг: 159
#7: 2009-03-02 12:12:25 ЛС | профиль | цитата
А не было варианта сделать событие, которое и означало бы, что записей не найдено?
карма: 1

0
Администрация
Ответов: 15294
Рейтинг: 1518
#8: 2009-03-02 12:18:04 ЛС | профиль | цитата
было, но уже после
карма: 26
0
Ответов: 485
Рейтинг: 86
#9: 2009-03-02 14:21:59 ЛС | профиль | цитата
Tad, может лучше автоматически определять Unix/Win?
code_11987.txt
карма: 0

0
файлы: 1code_11987.txt [1.3KB] [474]
Ответов: 16884
Рейтинг: 1239
#10: 2009-03-02 14:48:03 ЛС | профиль | цитата
filyaxxxcom, спасибо ! Есть у меня и такой вариант, а этот "древний" вариант sha первым попался под руку.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 485
Рейтинг: 86
#11: 2009-03-02 14:53:16 ЛС | профиль | цитата
Tad, А этот древний вариант сейчас корректно работает? Может поделишся свежим... А то я уже начал его под себя переделывать.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#12: 2009-03-02 15:41:18 ЛС | профиль | цитата
filyaxxxcom, этот вариант работает без проблем.
Как только найду sha нового так и поделюсь.
Я sha сбрасываю в архивы, чтобы под ногами не путались.
Вечером попытаюсь найти.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:filyaxxxcom
Ответов: 485
Рейтинг: 86
#13: 2009-03-02 16:16:34 ЛС | профиль | цитата
Tad писал(а):
этот вариант работает без проблем
Ок. Тогда можешь не искать. Спасибо.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#14: 2009-03-03 17:55:40 ЛС | профиль | цитата
nesco, глянь

procedure THISQLite_QueryScalar._work_doQuery;
var dt:TData;
id:pointer;
mes:PChar;
s:string;
begin
dt := ReadData(_Data,_data_dbHandle,nil);
// s := ReadString(_Data,_data_SQL,_prop_SQL); Вот эти две строки я бы перенес за IF
// id := ToObject(dt);
if _IsObject(dt,SQLite_GUID) then
begin
FResult := ';
s := ReadString(_Data,_data_SQL,_prop_SQL); // <--- Вот сюда.
id := ToObject(dt);
sqlite3_exec(id,PChar(s), callback, self, @mes);
if mes <> ' then
_hi_onEvent(_event_onError, string(mes))
else
_hi_onEvent(_event_onQuery, FResult);
end;
end;

мне так кажется. ( И в SQLite_Query тоже )
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26067
Рейтинг: 2121
#15: 2009-03-03 18:02:19 ЛС | профиль | цитата
Tad, это ты не ко мне, это надо к автору...

Я вот так и не понял назначения этого компонента, может такие ситуевины не возникали, когда он мне бы был нужен по-зарез.
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)