Помогите создать запрос позволяющий удалять лишние символы с полей бд.
» Access VBA
запрос на обновление, текстовые функции, если заупрямится - сперва создать временную таблицу с обновленными должным образом полями привязанную к исходной, потом (убедившись что все обновилось верно) обновить поля исходной таблицы
Algofil, после Вашего ответа на вопрос:
Цитата:
у меня возник еще один: А если не для каждой детали из первой таблицы есть замена, то при создании отчёта появляются пустые строки. Как от них можно избавится?
Спасибо за ответ
Цитата:
Моя задача такая: есть таблица деталей и есть таблица замен для деталей из первой таблицы. Для вывода в отчёт мне надо в первую таблицу после каждой детали добавить строки с данными о заменах.
у меня возник еще один: А если не для каждой детали из первой таблицы есть замена, то при создании отчёта появляются пустые строки. Как от них можно избавится?
Спасибо за ответ
проще всего написать =iif(......) т.е. если нет замен честно писать "нет замен", а воще поколдовать над запросом, чтобы исключить пустые строки на дальних подступах
Помогите, пожалуйста, я создала запрос1, который делает выборку данных, полученных при выполнении запроса2. Но когда я запускаю на выполнение запрос1, система выдаёт сообщение:Открытие дополнительных БД невозможно.
Я изменила запрос2: выполняется не select, а insert в таблицу. Если потом в запросе1 брать данные из таблицы, то всё в порядке. Но мне это не подходит. Возможно есть какой то способ, который поможет выполнить запрос без создания дополнительной таблицы. Спасибо
Я изменила запрос2: выполняется не select, а insert в таблицу. Если потом в запросе1 брать данные из таблицы, то всё в порядке. Но мне это не подходит. Возможно есть какой то способ, который поможет выполнить запрос без создания дополнительной таблицы. Спасибо
запрос2 к чему обращается? если к существующим в БД таблицам, то запрос1 включит его подселектом без проблем, конструктор запросов - добавить - закладка запросы
Algofil, в том то и дело, что обращается к существующим.
Добавлено:
Кстати такая ошибка может возникнуть , если запрос очень длинный? Есть ли ограничения на количество символов?
Добавлено:
Кстати такая ошибка может возникнуть , если запрос очень длинный? Есть ли ограничения на количество символов?
ну не знаю, тока что проверил на БД кадров, все намана, конечно лень было "длинный" кликать, по идее не должно быть ограничений, в пределах байта точно, скорее даже двух байт... давайте подробности
вот запрос 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, то всё в порядке.
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, то всё в порядке.
с первого взгляда слишком много джойнов, в т.ч. вложенных, среди них скорее всего и кроется невозможность подключения.
как я поступаю в таких случаях:
пишу отдельные запросы начиная изнутри, работает - сохраняю пишу следующий цепляя 1-2 поля сверху тех которые уже отработаны и так пока вся хрень не заработает, не факт что заработает, но хоть буду знать на чем срезался, а это 90% успеха...
как я поступаю в таких случаях:
пишу отдельные запросы начиная изнутри, работает - сохраняю пишу следующий цепляя 1-2 поля сверху тех которые уже отработаны и так пока вся хрень не заработает, не факт что заработает, но хоть буду знать на чем срезался, а это 90% успеха...
Это понятно, но как тогда объяснить, что с таблицей такой запрос прерастно работает?
Но спасибо за совет, попробую, раскрутить этот запрос
Но спасибо за совет, попробую, раскрутить этот запрос
думаю что подселекты это неявные курсоры, если инсертить содержимое курсора в таблицу оно фиксируется и доступно всегда, а из курсора не в любой момент можно получить данные
Теперь понятно, спасибо)
Здравствуйте, я опять поднимаю такой вопрос: как преодолеть сообщение "Открытие дополнительных БД невозможно"?Мне необходимо выполнить такой запрос:
SELECT *
FROM z_2
UNION SELECT * FROM z_3; На что система выдаёт описанное выше сообщение. Запросы z_2 и z_3 в свою очередь простейшие селекты. Выполнить данный запрос жизненно необходимо! Подскажите, кто, что может
SELECT *
FROM z_2
UNION SELECT * FROM z_3; На что система выдаёт описанное выше сообщение. Запросы z_2 и z_3 в свою очередь простейшие селекты. Выполнить данный запрос жизненно необходимо! Подскажите, кто, что может
если работают селекты по з_2 и з_3 отдельно, то скорее всего не совпадают поля для юнион... попробовать джойны разве?
Я описала одинаковые поля. При использовании джойна выдаётся тоже сообщение
джойны с псевдонимами?
если идти от средины запроса когда выдает отказ?
и ваще тема аксесс не узковата? я вижу тут неслабый скуль-девелопер задает вопросы )))
если идти от средины запроса когда выдает отказ?
и ваще тема аксесс не узковата? я вижу тут неслабый скуль-девелопер задает вопросы )))
Да, я использовала джойны с псевдонимами - не помогает )))
Привет всем! помогите если кто сможет, у меня такой вопрос, можно ли изменить сумму какого либо поля таблицы в запросе? заранее благодарю.
Скажите пожалуйста, как изменить такую вот строку на Visual Basic :
Me.GroupLevel(5).ControlSource = "kzam"
которая выполняет группировку по полю "kzam" по возрастанию, чтобы группировка выполнялась по убыванию? Спасибо
Me.GroupLevel(5).ControlSource = "kzam"
которая выполняет группировку по полю "kzam" по возрастанию, чтобы группировка выполнялась по убыванию? Спасибо
Egepsihora
Me.GroupLevel(5).SortOrder = True.
True - descendig order, False - ascending order.
Me.GroupLevel(5).SortOrder = True.
True - descendig order, False - ascending order.
глупая наверно проблема, но не могу решить.
В форме есть поле которое автоматически считается, взависимости от введенных данных.
Это поле в отчете необходимо выводить в виде xxx.00 то есть например 356.00 454.00
при подсчете поле получается дробным, если его округлять, то в отчет выводится соотвественно без дробной части: 356 454 . Мне же необходимо выводить округленное значение, но в виде 356.00 454.00.
В форме есть поле которое автоматически считается, взависимости от введенных данных.
Это поле в отчете необходимо выводить в виде xxx.00 то есть например 356.00 454.00
при подсчете поле получается дробным, если его округлять, то в отчет выводится соотвественно без дробной части: 356 454 . Мне же необходимо выводить округленное значение, но в виде 356.00 454.00.
1. округляем значение поля в конструкторе Выражение1: Round([q])
2. свойства: а) формат выбираем фиксированный б) количество знаков после запятой выбираем 2
тока вот нафига? такие кундштюки приводят к труднообнаружимым ошибкам в процессе эксплуатации
2. свойства: а) формат выбираем фиксированный б) количество знаков после запятой выбираем 2
тока вот нафига? такие кундштюки приводят к труднообнаружимым ошибкам в процессе эксплуатации
Algofil к каким же ошибкам это приводит, если не секрет?
например к ошибкам агрегирования
12.35 -> 12.00
13.45 -> 13.00
Sum() = 15.80 -> 16.00
бухи будут довольны ))
12.35 -> 12.00
13.45 -> 13.00
Sum() = 15.80 -> 16.00
бухи будут довольны ))
Господа, подскажите почему сей код
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)
работает нормально.
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)
работает нормально.
Здравствуйте. Мне необходимо в запросе вытащить 2 столбца с данными из другого запроса и пронумеровать каждую строку, начиная с 0. Вопрос: существует ли какая либо агрегатная функция или другой способ для выполнения нумерации?? Спасибо
Добавлено:
http://www.sql.ru/faq/faq_topic.aspx?fid=214
Я нашла ответ на свой вопрос здесь
Добавлено:
http://www.sql.ru/faq/faq_topic.aspx?fid=214
Я нашла ответ на свой вопрос здесь
Algofil спасибо большое.
Понимаю что не очень разумное решение, но "нам надо именно так"(с)
не поспоришь)
Понимаю что не очень разумное решение, но "нам надо именно так"(с)
не поспоришь)
Здравствуйте, есть запрос, который возвращает данные в таком виде:
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"
Но тем не менее нужного результата не получаю. Как можно добиться того ,что нужно???
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"
Но тем не менее нужного результата не получаю. Как можно добиться того ,что нужно???
после импорта Вашего примера в аксес примитивный запрос с группировкой в конструкторе выдал вот что:
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;
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, истории становления российского интернета. Сделано для людей.