Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите!!!Help!!!
 
 автор: satan   (21.07.2011 в 19:27)   личное сообщение
 
 

У меня возникла проблема с выполнением запроса в форме. Вот кусок кода на который жалуется:

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, тоже самое.
Подскажите, пожалуйста, в чём проблема.

  Ответить  
 
 автор: час   (21.07.2011 в 20:44)   личное сообщение
 
 

пример:
Dim db As Database
Dim RST As Recordset

Set db = CurrentDb
Set RST = db.OpenRecordset("TUNING_TBL", dbOpenDynaset)
--------------------------------------

Set таблsum1 = db.OpenRecordset(strsum1, dbOpenDynaset)

  Ответить  
 
 автор: osmor   (22.07.2011 в 09:41)   личное сообщение
 
 

замените
Dim таблsum1 As Recordset
на
Dim таблsum1 As dao.Recordset

  Ответить  
 
 автор: Анатолий (Киев)   (22.07.2011 в 10:19)   личное сообщение
 
 

После исправления по совету osmor, получите сообщение об ошибке в выражении SQL, т.к. не хватает пробелов, а затем, вероятно, получите не тот результат, что хотели, т.к. дата в текст запроса попадает в неправильном формате.
Кроме того рекомендую заменить HAVING на WHERE.

  Ответить  
 
 автор: час   (22.07.2011 в 10:38)   личное сообщение
 
 

Создайте работающий вариант запроса в режиме конструктора запросов, а затем перенесите его в код в виде строки SQL? скопировав из конструктора запросов.
Будет меньше ошибок.

  Ответить  
 
 автор: satan   (22.07.2011 в 12:40)   личное сообщение
 
 

Я так и сделал! Запрос работает, а в форме нет.(((

  Ответить  
 
 автор: час   (22.07.2011 в 12:48)   личное сообщение
 
 

Как говорит Анатолий(Киев)
Пробелов не хватает
вот тут к примеру
"And ((Min(

надо вот так
" And ((Min(

Dhn тут
U_xxx.SUM" &

Вот так
U_xxx.SUM " &

  Ответить  
 
 автор: satan   (22.07.2011 в 16:25)   личное сообщение
 
 

Я пробовал это в строке писать, там где всё с пробелами было в порядке. Тоже не получается.
Надо бы вообше пояснить суть.
Вообщем: есть две даты, грубо говоря, начальная и конечная, между которыми расчитывается динамика кредитного спреда, но фишка в том, что если в выбранный период была оферта по бумаге, то кредитный спред подсчитается не правильно, из-за изменнения ставки купона. ну вот я стараюсь серией подобных запросов выловить дату возморжной оферты в выбранном периоде и минимальную дату после выбранного периода и сравнить ставки купонов по этим датам. Но вот почему-то жалуется на запрос, который, как я уже говрил раньше, нормально вполняется, как запрос, но в форме ниего не получается.

  Ответить  
 
 автор: Дядя Федор   (22.07.2011 в 16:31)   личное сообщение
 
 

если есть сохраненный запрос (через конструктор) с именем, например, QVR1, то используйте его как источник данных.

  Ответить  
 
 автор: satan   (22.07.2011 в 16:37)   личное сообщение
 
 

Пробовал его запускать через команду Cmd.RunSQL не выполняется, как я понял данные не передаются из формы в запрос, т.к. когда вылетала ошибка, не выключая программу пробовал запустить запрос, ничего не выводил он.

  Ответить  
 
 автор: Дядя Федор   (22.07.2011 в 16:57)   личное сообщение
 
 

Set db = CurrentDb
Set RST = db.OpenRecordset("QVR1", dbOpenDynaset)

  Ответить  
 
 автор: satan   (22.07.2011 в 17:23)   личное сообщение
 
 

Пишет, слишком мало параметров, походу дела, не беруться данные из формы.

  Ответить  
 
 автор: час   (23.07.2011 в 09:37)   личное сообщение
 
 

Создайте в таблице дополнительное поле
Например СТАТУС помечайте в этом поле чистый, оферта, на подписи, первостепенный, чё_там_ещё
Тогда - ловить офертные - не составит труда.
Можно ещё добавить поле - Дата_Изменения_Статуса.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList