Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема при создании отчёта 
:(
    Опции темы
korob2001
Дата 29.5.2005, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Код

    Dim datFrom As String
    Dim datTo As String
    
    Dim sSQL1 As String
    
    datFrom = Format(dtpVan.Value, "mm/dd/yyyy ttttt")
    datTo = Format(dtpTot.Value, "mm/dd/yyyy ttttt")

Результат тот же.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
boevik
Дата 29.5.2005, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Показывай код и распечатай SQL который запускается.
Добавлено @ 19:18
Так как у тебя точка разделитель, то надо использовать:
Код

Format(dtpVan.Value, "mm\/dd\/yyyy ttttt")




--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
korob2001
Дата 29.5.2005, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Цитата

Format(dtpVan.Value, "mm\/dd\/yyyy ttttt")

То, что нужно. Всё заработало. smile
Мне этот отчёт уже все нервы вытрепал. smile

Спасибо ОГРОМНОЕ.

ЗЫ: полесдний вопрос по данной теме, для чего в запросе ты использовал between???

Это сообщение отредактировал(а) korob2001 - 29.5.2005, 19:29


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
boevik
Дата 29.5.2005, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



between используется для выбора между двумя значениями, т.е. X between Y and Z эквевалентен записи Х>Y and X<Z


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
korob2001
Дата 29.5.2005, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Ещё раз спасибо. Всё понял. smile


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
korob2001
Дата 30.5.2005, 03:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Вот ещё на какие грабли наступил. smile
Если чел задал диапазон даты, а в таблице нет записи с такой датой, то выводится сообщение об ошибке:

Invalig DataSource

Не гуд. Мне бы заменить его на сообщение типа "Не найдено ниодной записи с заданным диапазоном", в том же MsgBox.
Пытаюсь перехватить ошибку так:
Код

' Начало процедуры
On Error GoTo ErrCheck

' Тело процедуры, генерирующей отчёт

' Конец процедуры
    Exit Sub
    
ErrCheck:
MsgBox "Не найдено ниодной записи с заданным диапазоном."

Вроде всё правильно, но сообщение я так и получаю: Invalig DataSource
Что не так???


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
boevik
Дата 30.5.2005, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Проверяй полученный recordset на наличие данных

Код

Set rst = cn.Execute(....)
if rst.bof and rst.eof then
    MsgBox "No data"
   Exit sub
end if


Если не поможет, то показывай код.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
korob2001
Дата 30.5.2005, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



boevik - Спасибо, всё работает так, как нужно.

Зы: код я уже показывал в начале этой темы.

Это сообщение отредактировал(а) korob2001 - 30.5.2005, 08:35


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
boevik
Дата 30.5.2005, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Цитата(korob2001 @ 30.5.2005, 08:34)
Зы: код я уже показывал в начале этой темы

С той поры много воды утекло smile .
Твой код должен был претерпеть много изменений.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
korob2001
Дата 30.5.2005, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



smile ОК. Может кому и пригодится. Теперь он выглядит так:
Код

Private Sub cmdGetReport_Click()
    ' Объявляем локальные переменные, для получения ввыбранных пользователем дат
    Dim datFrom As String
    Dim datTo As String
    
    ' Создаём переменную для генерации SQL запросов
    Dim sSQL1 As String
    
    ' Получаем выбранные пользователем даты и сохраняем в переменных
    If DateDiff("d", dtpTot.Value, dtpVan.Value) > 0 Then
        datFrom = Format(dtpVan.Value, "mm\/dd\/yyyy ttttt")
        datTo = Format(dtpTot.Value, "mm\/dd\/yyyy ttttt")
    Else
        datFrom = Format(dtpVan.Value, "mm\/dd\/yyyy 0:00:00")
        datTo = Format(dtpTot.Value, "mm\/dd\/yyyy 23:59:59")
    End If
    
    ' MsgBox datFrom
    
    ' Если пользователь указал начальную дату, больше конечной,
    ' то выводим ему сообщение об ошибке и завершаем выполнение программы
    If DateDiff("s", datTo, datFrom) > 0 Then
        MsgBox "Initial date more final. Correct a mistake and repeat again", vbOKOnly + vbCritical, "Error"
        Exit Sub
    End If
    
    ' Выгружаем форму и выводи отчёт
    Unload Me
        
    ' Строим запрос на выборку из таблицы Besteling
    sSQL1 = "SELECT Besteling.MenuId, Besteling.JoinTime, Menu.MenuTitle, Menu.Prijs, MenuGroups.MenuGroup"
    sSQL1 = sSQL1 & " FROM (MenuGroups INNER JOIN Menu ON MenuGroups.GroupId = Menu.GroupId) INNER JOIN Besteling ON Menu.MenuId = Besteling.MenuId"
    sSQL1 = sSQL1 & " WHERE JoinTime BETWEEN #" & datFrom & "# AND #" & datTo & "# AND TranssControl=1"
    Unload Me
    
    ' Выполняем запрос
    Set rs = modVar.cn.Execute(sSQL1)
    If rs.BOF And rs.EOF Then
        MsgBox "It is not found records with the set range" & vbCrLf & _
               "Try to change a range", vbOKOnly + vbCritical, "Error"
        Exit Sub
    End If
    
    ' Циклически проходим по всем записям таблицы Besteling соответствующих SQL запросу rs1
    While Not rs.EOF
        Set dtrReport.DataSource = rs
        rs.MoveNext
    Wend
    dtrReport.Show
End Sub


Это сообщение отредактировал(а) korob2001 - 30.5.2005, 08:57


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Igor Graf
Дата 7.6.2005, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 152
Регистрация: 10.2.2005

Репутация: нет
Всего: нет



Приве всем, тема у вас очень интересная, и у меня тоже возник по ней вопрос, а как быть если таблицы лежат в разных базах, можно ли как-нибудь сделать что-либо похожее.
Я так понимаю, для 2х баз нужно сделать 2 Connection , а как быть дальше?


С уважением Graf

Это сообщение отредактировал(а) Igor Graf - 7.6.2005, 09:50
PM MAIL   Вверх
Exception
Дата 7.6.2005, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



блин... у нас же отдельный форум по сиквелу есть! Туда бы и задал smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0523 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.