![]() |
|
Модераторы: Akina |
![]()
|
|
| korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Привет!!!
Я вам наверное уже надоел, со своими ламерскими вопросами. Вобщем есть 3 связанных таблицы: Таблица: Besteling ![]() Таблица: Menu ![]() Таблица: MenuGroups ![]() Мне необходимо создать отчёт с помощью DataReport и всё вроде ничего, но этот отчёт должен состоять не со всех полей приведённых выше таблиц, а из следующих:
Отсюда видно, что отчёт долже быть сгенерирован из полей нескольких таблиц, причём не всех подряд. Пишу такую процедуру:
Но все строки в отчёте одинаковые. Подскажите как создать отчёт при помощи DataReport из нескольких таблиц??? Спасибо. Это сообщение отредактировал(а) korob2001 - 29.5.2005, 11:56 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Надо связать все три таблицы при помощи JOIN, к примеру так.
Этот запрос вернет тебе все результат уже трех связаных таблиц по указаным полям. А дальше уже подцепляй RecordSet к DataReport. Это сообщение отредактировал(а) boevik - 29.5.2005, 12:15 -------------------- Никогда не говори никогда |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
![]() Может я что-то не так написал???
-------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Создай запрос в Access, он же построит и требуемый правильный SQL.
-------------------- Никогда не говори никогда |
|||
|
||||
| Gannibal |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 742 Регистрация: 15.4.2003 Где: 010101 Репутация: 18 Всего: 17 |
если поможет
-------------------- Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить! |
|||
|
||||
| korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Запрос построил, вот так работает:
Мне нужно ещё отобрать те записи, у которых поле JoinTime >= var1 AND JoinTime <= var2 AND Pyid=1 AND TranssControl=1 где:
Т.е. я должен получить только одну запись, самую последнюю в таблице Besteling и всё её связи с другими таблицами, перая же запись за 29 число не должна пройти из-за того, что у неё не установлен флажок в поле TranssControl, хотя по дате и времени она проходит. Как я понимаю, то нужно в конец добавить это условие, добавляю и получаю опять ошибку в SQL запросе. M.E.G.U.S - да топик действительно по этой теме, но у меня не одна таблица а три и что самое плохое, это то, что нужно выдёргивать по нескольку полей из каждой, да ещё при этом сравнивать с датами и Boolean. С одной таблицей я разобрался сразу, по учебнику, а вот про несколько таблиц в нём ничего не нашёл. Это сообщение отредактировал(а) korob2001 - 29.5.2005, 17:21 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
korob2001, так в чем проблема?
Обрати внимание на формат даты. -------------------- Никогда не говори никогда |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Я вот именно на неё и обращаю внимание. У меня дата в базе и в переменной в таком формате: БД: 22.05.2005 15:41:17 Переменная: Format( CDate( txtDate.text ), "ddddd ttttt") Т.е. в переменной получается аналогичный формат, как и в БД. Но у тебя вместо разделителя точка, стоят слэши. Это играет какую-то роль или это зависит от региональных настроек?? -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| Gannibal |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 742 Регистрация: 15.4.2003 Где: 010101 Репутация: 18 Всего: 17 |
в запросе со слешами .. а в таблице без с точкой тй.. должно нормально работать одно второму немешает у тебя всёравно должен формат переводиться в нормальный с точками как у тебя стоит..
-------------------- Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить! |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Да играет, уже проверил, такой формат не катит. Но дело в том, что я получаю дату из DTPicker, затем сохраняю её в переменную типа as Date.
Это сообщение отредактировал(а) korob2001 - 29.5.2005, 18:27 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| Gannibal |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 742 Регистрация: 15.4.2003 Где: 010101 Репутация: 18 Всего: 17 |
а как катит? или вообще никак ещё?
-------------------- Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить! |
|||
|
||||
| korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Вот если я использую такой запрос:
т.е. вставляю дату в ручную, то всё работает так как надо, но если только подставляю вместо дат переменные, то сразуже получаю ошибку в SQL запросе. Даты в переменные я получаю так:
Вот тут и получаю ошибку. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
| boevik |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Замени на
и для сравнения дат лучше использовать DateDiff
Это сообщение отредактировал(а) boevik - 29.5.2005, 18:48 -------------------- Никогда не говори никогда |
||||||||
|
|||||||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Исправил, но всё равно получаю сообщение:
![]() Он всё равно расставляет точки. Это сообщение отредактировал(а) korob2001 - 29.5.2005, 18:56 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
korob2001 обрати внимание, что datFrom и datTo типа String
-------------------- Никогда не говори никогда |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Результат тот же. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Показывай код и распечатай SQL который запускается.
Добавлено @ 19:18 Так как у тебя точка разделитель, то надо использовать:
-------------------- Никогда не говори никогда |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
То, что нужно. Всё заработало. Мне этот отчёт уже все нервы вытрепал. Спасибо ОГРОМНОЕ. ЗЫ: полесдний вопрос по данной теме, для чего в запросе ты использовал between??? Это сообщение отредактировал(а) korob2001 - 29.5.2005, 19:29 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
between используется для выбора между двумя значениями, т.е. X between Y and Z эквевалентен записи Х>Y and X<Z
-------------------- Никогда не говори никогда |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Ещё раз спасибо. Всё понял.
-------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Вот ещё на какие грабли наступил.
Если чел задал диапазон даты, а в таблице нет записи с такой датой, то выводится сообщение об ошибке: Invalig DataSource Не гуд. Мне бы заменить его на сообщение типа "Не найдено ниодной записи с заданным диапазоном", в том же MsgBox. Пытаюсь перехватить ошибку так:
Вроде всё правильно, но сообщение я так и получаю: Invalig DataSource Что не так??? -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Проверяй полученный recordset на наличие данных
Если не поможет, то показывай код. -------------------- Никогда не говори никогда |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
boevik - Спасибо, всё работает так, как нужно.
Зы: код я уже показывал в начале этой темы. Это сообщение отредактировал(а) korob2001 - 30.5.2005, 08:35 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
С той поры много воды утекло Твой код должен был претерпеть много изменений. -------------------- Никогда не говори никогда |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Это сообщение отредактировал(а) korob2001 - 30.5.2005, 08:57 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| Igor Graf |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 152 Регистрация: 10.2.2005 Репутация: нет Всего: нет |
Приве всем, тема у вас очень интересная, и у меня тоже возник по ней вопрос, а как быть если таблицы лежат в разных базах, можно ли как-нибудь сделать что-либо похожее.
Я так понимаю, для 2х баз нужно сделать 2 Connection , а как быть дальше? С уважением Graf Это сообщение отредактировал(а) Igor Graf - 7.6.2005, 09:50 |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 7 Всего: 186 |
блин... у нас же отдельный форум по сиквелу есть! Туда бы и задал
|
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |