|
|
|
| У меня возникла проблема с выполнением запроса в форме. Вот кусок кода на который жалуется:
Dim strsum1 As String
Dim sum1 As Database
Set sum1 = DBEngine.Workspaces(0).Databases(0)
Dim таблsum1 As Recordset
strsum1 = "SELECT U_xxx.ID_INSTR, Min(U_xxx.DATE) AS [Min-DATE], U_xxx.SUM" & _
"FROM U_xxx GROUP BY U_xxx.ID_INSTR, U_xxx.SUM, U_xxx.Note" & _
"HAVING (((U_xxx.ID_INSTR)=" + CInt(Me!Поле_ID) + ")" & _
"And ((Min(U_ххх.DATE))>=" + CDate(Me!ПолеДата1) + " And (Min(ххх.DATE))<=" + CDate(Me!полеДата2) + ") And ((U_ххх.Note) Is Null));"
Set таблsum1 = sum1.OpenRecordset(strsum1, DB_OPEN_DYNASET)
Выдаёт ошибку type mismatch, Хотя в таблице ID_INSTR заведён как "Числовой - Длинное целое", а DATE как "дата/время". пробовал Me!Поле_ID переводить в CLng, тоже самое.
Подскажите, пожалуйста, в чём проблема. | |
|
| |
|
|
|
| пример:
Dim db As Database
Dim RST As Recordset
Set db = CurrentDb
Set RST = db.OpenRecordset("TUNING_TBL", dbOpenDynaset)
--------------------------------------
Set таблsum1 = db.OpenRecordset(strsum1, dbOpenDynaset)
|
| |
|
| |
|
|
|
| замените
Dim таблsum1 As Recordset
на
Dim таблsum1 As dao.Recordset | |
|
| |
|
|
|
| После исправления по совету osmor, получите сообщение об ошибке в выражении SQL, т.к. не хватает пробелов, а затем, вероятно, получите не тот результат, что хотели, т.к. дата в текст запроса попадает в неправильном формате.
Кроме того рекомендую заменить HAVING на WHERE. | |
|
| |
|
|
|
| Создайте работающий вариант запроса в режиме конструктора запросов, а затем перенесите его в код в виде строки SQL? скопировав из конструктора запросов.
Будет меньше ошибок. | |
|
| |
|
|
|
| Я так и сделал! Запрос работает, а в форме нет.((( | |
|
| |
|
|
|
| Как говорит Анатолий(Киев)
Пробелов не хватает
вот тут к примеру
"And ((Min(
надо вот так
" And ((Min(
Dhn тут
U_xxx.SUM" &
Вот так
U_xxx.SUM " & | |
|
| |
|
|
|
| Я пробовал это в строке писать, там где всё с пробелами было в порядке. Тоже не получается.
Надо бы вообше пояснить суть.
Вообщем: есть две даты, грубо говоря, начальная и конечная, между которыми расчитывается динамика кредитного спреда, но фишка в том, что если в выбранный период была оферта по бумаге, то кредитный спред подсчитается не правильно, из-за изменнения ставки купона. ну вот я стараюсь серией подобных запросов выловить дату возморжной оферты в выбранном периоде и минимальную дату после выбранного периода и сравнить ставки купонов по этим датам. Но вот почему-то жалуется на запрос, который, как я уже говрил раньше, нормально вполняется, как запрос, но в форме ниего не получается. | |
|
| |
|
|
|
| если есть сохраненный запрос (через конструктор) с именем, например, QVR1, то используйте его как источник данных. | |
|
| |
|
|
|
| Пробовал его запускать через команду Cmd.RunSQL не выполняется, как я понял данные не передаются из формы в запрос, т.к. когда вылетала ошибка, не выключая программу пробовал запустить запрос, ничего не выводил он. | |
|
| |
|
|
|
| Set db = CurrentDb
Set RST = db.OpenRecordset("QVR1", dbOpenDynaset) | |
|
| |
|
|
|
| Пишет, слишком мало параметров, походу дела, не беруться данные из формы. | |
|
| |
|
|
|
| Создайте в таблице дополнительное поле
Например СТАТУС помечайте в этом поле чистый, оферта, на подписи, первостепенный, чё_там_ещё
Тогда - ловить офертные - не составит труда.
Можно ещё добавить поле - Дата_Изменения_Статуса. | |
|
| |