Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Access VBA

Автор: OOD
Дата сообщения: 24.10.2007 11:12
Помогите создать запрос позволяющий удалять лишние символы с полей бд.
Автор: Algofil
Дата сообщения: 24.10.2007 11:20
запрос на обновление, текстовые функции, если заупрямится - сперва создать временную таблицу с обновленными должным образом полями привязанную к исходной, потом (убедившись что все обновилось верно) обновить поля исходной таблицы
Автор: Egepsihora
Дата сообщения: 24.10.2007 16:55
Algofil, после Вашего ответа на вопрос:

Цитата:
Моя задача такая: есть таблица деталей и есть таблица замен для деталей из первой таблицы. Для вывода в отчёт мне надо в первую таблицу после каждой детали добавить строки с данными о заменах.


у меня возник еще один: А если не для каждой детали из первой таблицы есть замена, то при создании отчёта появляются пустые строки. Как от них можно избавится?

Спасибо за ответ
Автор: Algofil
Дата сообщения: 24.10.2007 17:08
проще всего написать =iif(......) т.е. если нет замен честно писать "нет замен", а воще поколдовать над запросом, чтобы исключить пустые строки на дальних подступах
Автор: Egepsihora
Дата сообщения: 26.10.2007 13:41
Помогите, пожалуйста, я создала запрос1, который делает выборку данных, полученных при выполнении запроса2. Но когда я запускаю на выполнение запрос1, система выдаёт сообщение:Открытие дополнительных БД невозможно.
Я изменила запрос2: выполняется не select, а insert в таблицу. Если потом в запросе1 брать данные из таблицы, то всё в порядке. Но мне это не подходит. Возможно есть какой то способ, который поможет выполнить запрос без создания дополнительной таблицы. Спасибо
Автор: Algofil
Дата сообщения: 26.10.2007 14:45
запрос2 к чему обращается? если к существующим в БД таблицам, то запрос1 включит его подселектом без проблем, конструктор запросов - добавить - закладка запросы
Автор: Egepsihora
Дата сообщения: 26.10.2007 15:28
Algofil, в том то и дело, что обращается к существующим.


Добавлено:
Кстати такая ошибка может возникнуть , если запрос очень длинный? Есть ли ограничения на количество символов?
Автор: Algofil
Дата сообщения: 26.10.2007 15:43
ну не знаю, тока что проверил на БД кадров, все намана, конечно лень было "длинный" кликать, по идее не должно быть ограничений, в пределах байта точно, скорее даже двух байт... давайте подробности
Автор: Egepsihora
Дата сообщения: 26.10.2007 15:48
вот запрос z_1, который выполняется превым:
SELECT DISTINCT z_0.idKDN AS id, z_0.Kod AS kdn, t_Izd_Det_Mat.Dec_Num
FROM z_0, t_Izd_Det_Mat
WHERE (((z_0.idKDN)=[t_Izd_Det_Mat].[Kod_Dec_Num]))
ORDER BY z_0.idKDN;
Вот запрос z_2, который должен выполняеться вторым:
SELECT DISTINCT z_1.id AS id, z_1.kdn AS kdn, t_Izd_Det_Mat.Dec_Num, [kstor]+[ksbor]+[knzp]+[kzam]+[ksbzam]+[kzgt]+[kzgtzam]+[kzamzgt]+[kzamzgtzam] AS kall, 0+NZ([kolstor],0) AS kstor, 0+NZ([kolnzp],0) AS knzp, 0+NZ([kolsb],0) AS ksbor, 0+NZ([kolzam],0) AS kzam, 0+NZ([kolsbzam],0) AS ksbzam, 0+NZ([kolzgt],0) AS kzgt, 0+NZ([kolzgtzam],0) AS kzgtzam, 0+NZ([kolzamzgt],0) AS kzamzgt, 0+NZ([kolzamzgtzam],0) AS kzamzgtzam
FROM t_Tip INNER JOIN ((z_ot_rest_ob_01_04_07 RIGHT JOIN (((((t_Izd_Det_Mat INNER JOIN (((z_1 LEFT JOIN z_ot_rest_ob_01_01_01 ON z_1.kdn = z_ot_rest_ob_01_01_01.kdn) LEFT JOIN z_ot_rest_ob_01_01_02 ON z_1.kdn = z_ot_rest_ob_01_01_02.kdn) LEFT JOIN z_ot_rest_ob_01_01_06 ON z_1.kdn = z_ot_rest_ob_01_01_06.kdn) ON t_Izd_Det_Mat.Kod_Dec_Num = z_1.kdn) LEFT JOIN z_ot_rest_ob_01_01_08 ON z_1.kdn = z_ot_rest_ob_01_01_08.kdn) LEFT JOIN z_ot_rest_ob_01_01_09 ON z_1.kdn = z_ot_rest_ob_01_01_09.kdn) LEFT JOIN z_ot_rest_ob_01_04_03 ON z_1.kdn = z_ot_rest_ob_01_04_03.kdn) LEFT JOIN z_ot_rest_ob_01_04_05 ON z_1.kdn = z_ot_rest_ob_01_04_05.kdn) ON z_ot_rest_ob_01_04_07.kdn = z_1.kdn) LEFT JOIN z_ot_rest_ob_01_04_09 ON z_1.kdn = z_ot_rest_ob_01_04_09.kdn) ON t_Tip.Cod_Tipa = t_Izd_Det_Mat.Cod_Tipa;
Такой запрос не выполняется,НО
Если в z_1 я добавляю строку INSERT INTO t_1(id,kdn,dec_num),
а потом в z_2 делаю select из t_1 вместо z_1, то всё в порядке.
Автор: Algofil
Дата сообщения: 26.10.2007 16:04
с первого взгляда слишком много джойнов, в т.ч. вложенных, среди них скорее всего и кроется невозможность подключения.
как я поступаю в таких случаях:
пишу отдельные запросы начиная изнутри, работает - сохраняю пишу следующий цепляя 1-2 поля сверху тех которые уже отработаны и так пока вся хрень не заработает, не факт что заработает, но хоть буду знать на чем срезался, а это 90% успеха...
Автор: Egepsihora
Дата сообщения: 26.10.2007 16:08
Это понятно, но как тогда объяснить, что с таблицей такой запрос прерастно работает?
Но спасибо за совет, попробую, раскрутить этот запрос
Автор: Algofil
Дата сообщения: 26.10.2007 16:17
думаю что подселекты это неявные курсоры, если инсертить содержимое курсора в таблицу оно фиксируется и доступно всегда, а из курсора не в любой момент можно получить данные
Автор: Egepsihora
Дата сообщения: 26.10.2007 16:23
Теперь понятно, спасибо)
Автор: Egepsihora
Дата сообщения: 29.10.2007 09:44
Здравствуйте, я опять поднимаю такой вопрос: как преодолеть сообщение "Открытие дополнительных БД невозможно"?Мне необходимо выполнить такой запрос:
SELECT *
FROM z_2
UNION SELECT * FROM z_3; На что система выдаёт описанное выше сообщение. Запросы z_2 и z_3 в свою очередь простейшие селекты. Выполнить данный запрос жизненно необходимо! Подскажите, кто, что может
Автор: Algofil
Дата сообщения: 29.10.2007 11:00
если работают селекты по з_2 и з_3 отдельно, то скорее всего не совпадают поля для юнион... попробовать джойны разве?
Автор: Egepsihora
Дата сообщения: 29.10.2007 11:02
Я описала одинаковые поля. При использовании джойна выдаётся тоже сообщение
Автор: Algofil
Дата сообщения: 29.10.2007 11:20
джойны с псевдонимами?
если идти от средины запроса когда выдает отказ?
и ваще тема аксесс не узковата? я вижу тут неслабый скуль-девелопер задает вопросы )))
Автор: Egepsihora
Дата сообщения: 29.10.2007 11:43
Да, я использовала джойны с псевдонимами - не помогает )))
Автор: Noname dr
Дата сообщения: 11.11.2007 20:09
Привет всем! помогите если кто сможет, у меня такой вопрос, можно ли изменить сумму какого либо поля таблицы в запросе? заранее благодарю.
Автор: Egepsihora
Дата сообщения: 12.11.2007 12:34
Скажите пожалуйста, как изменить такую вот строку на Visual Basic :
Me.GroupLevel(5).ControlSource = "kzam"
которая выполняет группировку по полю "kzam" по возрастанию, чтобы группировка выполнялась по убыванию? Спасибо
Автор: Vitus_Bering
Дата сообщения: 12.11.2007 14:48
Egepsihora
Me.GroupLevel(5).SortOrder = True.
True - descendig order, False - ascending order.
Автор: KekcMF
Дата сообщения: 13.11.2007 08:27
глупая наверно проблема, но не могу решить.
В форме есть поле которое автоматически считается, взависимости от введенных данных.
Это поле в отчете необходимо выводить в виде xxx.00 то есть например 356.00 454.00
при подсчете поле получается дробным, если его округлять, то в отчет выводится соотвественно без дробной части: 356 454 . Мне же необходимо выводить округленное значение, но в виде 356.00 454.00.
Автор: Algofil
Дата сообщения: 13.11.2007 10:42
1. округляем значение поля в конструкторе Выражение1: Round([q])
2. свойства: а) формат выбираем фиксированный б) количество знаков после запятой выбираем 2

тока вот нафига? такие кундштюки приводят к труднообнаружимым ошибкам в процессе эксплуатации
Автор: jONES1979
Дата сообщения: 13.11.2007 15:15
Algofil к каким же ошибкам это приводит, если не секрет?
Автор: Algofil
Дата сообщения: 13.11.2007 15:40
например к ошибкам агрегирования
12.35 -> 12.00
13.45 -> 13.00
Sum() = 15.80 -> 16.00
бухи будут довольны ))
Автор: LuckyELF
Дата сообщения: 13.11.2007 21:11
Господа, подскажите почему сей код

Dim dlgSaveAs As FileDialog
Set dlgSaveAs = Application.FileDialog (msoFileDialogSaveAs)

валится с ошибкой 445: Object doesn't support this action

Пример взять из хелпа.

Вместе с тем, код

Dim dlgOpen As FileDialog
Set dlgOpen = Application.FileDialog (msoFileDialogOpen)

работает нормально.
Автор: Egepsihora
Дата сообщения: 14.11.2007 10:31
Здравствуйте. Мне необходимо в запросе вытащить 2 столбца с данными из другого запроса и пронумеровать каждую строку, начиная с 0. Вопрос: существует ли какая либо агрегатная функция или другой способ для выполнения нумерации?? Спасибо

Добавлено:

http://www.sql.ru/faq/faq_topic.aspx?fid=214
Я нашла ответ на свой вопрос здесь
Автор: KekcMF
Дата сообщения: 15.11.2007 11:11
Algofil спасибо большое.
Понимаю что не очень разумное решение, но "нам надо именно так"(с)
не поспоришь)
Автор: Egepsihora
Дата сообщения: 15.11.2007 17:05
Здравствуйте, есть запрос, который возвращает данные в таком виде:
rep tip kdn dnn kol
------------------------------------------
1 4 238 22-06 0
1 4 11436 МП90 0
2 1 179 01-069 0
2 1 10117 16x18 0
2 1 5187 220601 0
2 1 10117 НП90 ДП 0
2 1 10117 НП90 15
мне необходимо в отчёте выполнить группировку по возрастанию по 1, 2, 4 полю, и по убыванию 5 поле kol. При этом, если те записи, в которых kdn одинаков должны идти друг за другом. ТО есть, в таком виде:
1 4 238 22-06 0
1 4 11436 МП90 0
2 1 179 01-069 0
2 1 5187 220601 0
2 1 10117 НП90 15
2 1 10117 16x18 0
2 1 10117 НП90 ДП 0

Группировку задаю таким образом:
Me.GroupLevel(0).ControlSource = "rep"
Me.GroupLevel(1).ControlSource = "tip"
Me.GroupLevel(2).ControlSource = "dnn"
Me.GroupLevel(3).ControlSource = "kdn"
Me.GroupLevel(4).SortOrder = True
Me.GroupLevel(4).ControlSource = "kzam"
Но тем не менее нужного результата не получаю. Как можно добиться того ,что нужно???
Автор: Algofil
Дата сообщения: 15.11.2007 17:30
после импорта Вашего примера в аксес примитивный запрос с группировкой в конструкторе выдал вот что:
rep    tip    kdn    dnn    kol
1    4    238     22-06    0
1    4    11436 МП90 0
2    1    179     01-069    0
2    1    5187     220601    0
2    1    10117     НП90    15
2    1    10117     НП90 ДП    0
2    1    10117     16x18    0

вроде так и нужно, в чем проблема то?

SELECT Rep.rep, Rep.tip, Rep.kdn, Rep.dnn, Rep.kol
FROM Rep
GROUP BY Rep.rep, Rep.tip, Rep.dnn, Rep.kol, Rep.kdn
ORDER BY Rep.rep, Rep.tip, Rep.dnn, Rep.kol DESC;

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

Предыдущая тема: BDE - траблы, помогите пожалуйста срочно...


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.