Страница 1 из 1

вопрос по использованию sqlite

Добавлено: 10 июн 2010, 14:28
Kolizej
Здравствуйте!

Помогите пожалуйста решить следующий вопрос:

Довелось использовать базу sqlite в совокупности с отчетами стимулсофта.
Подключение настроил, все работает, запросы выполняются, и отчеты строятся.
Но возникла проблема с передачей параметров даты в DataSource.

База отрабатывает запросы с датой формата 'yyyy-MM-dd'.
Т.е. запрос вида "select * from docs where data >= '2010-01-01' " отрабатывает нормально.
Как только пытаюсь через параметр дату передать (select * from docs where data >= @dateFrom),
то либо ничего не отображается (при типе параметра text), либо возникают ошибки о некорректности сформированной строки.
Как решить данную проблему?

Добавлю еще:
select *
from doc d
where (d.Data >= @dateFrom)
отрабатывает, а запрос вида

select *
from doc d
where (d.Data >= @dateFrom) and (d.Data <= @dateTo)

при корректных значениях параметров ничего не выводит...

вопрос по использованию sqlite

Добавлено: 11 июн 2010, 06:43
Jan
Здравствуйте,

Сложно сказать в чем может быть проблема. sqlite не использовали, адаптер делали наши пользователи. Что можно попробывать:

1. Тип параметра в любом случае нужно использовать date, не текст.
2. Размер типа параметра (Size свойство у параметра) лучше не оставлять равным 0. Обычно это 10.
3. Заполнять параметры лучше при помощи такого кода:

Код: Выделить всё

report.Compile();
report["@parametername"] = value;
4. Иногда именованные ( формат @name) )параметры не работают. Иногда не работают два параметра, а один работает. Можно попробывать использовать неименованные параметры - формат (?). К примеру:

Код: Выделить всё

select * from customers where id = ? and name = ?
В данном случае параметры подставляются в порядке очередности в дереве. Использование неименованных параметров часто решает проблему.

5. В некоторых адаптерах (особенно экзотических) баз данных есть проблемы просто с передачей параметров из .net адаптера. При этом запрос без параметров работает хорошо. Можно попробывать использовать выражения в тексте запроса. Но стоит учитывать, что такое использование не верно, с точки зрения sql стандартов. Например:

Код: Выделить всё

select * from customers where id = {myvariable}
В данном случае Вам нужно будет присвоить нужное значение переменной myvariable, и, желательно, в строковом формате. Также нужно быть аккуратным с переменными типа - дата. В этом случае нужно сразу преобразовать их в правильный строковый формат.

Спасибо.