Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Как достать значение суммы повторившихся строк в поле через VBA

В форме "Составления наряда1" есть форма "Составления наряда2", в ней есть поле "должность". Как через VBA достать значение(сумма) повторяющихся строк "Лесоруб" в переменную, что бы можно было сделать ограничение типа: если количество строк "Лесоруб" > 4 вывод сообщения...
-конкретно,не могу достать это значение
Ответ: Для вашего запроса "Поиск повторений для Составление наряда2" (по скрину):
Visual Basic
1
2
k=номер наряда
povt=dlookup("Повторы", "Поиск повторений для Составление наряда2", "номер1 поле=" & k) ' 
Добавлено через 28 минут
Если на форму Составление наряда3 поставить кнопку17 со следующим кодом, то при ее нажатии будет выводиться количество повторов текущей должности для текущего наряда
Visual Basic
1
2
3
4
5
Private Sub Кнопка17_Click()
Dim k As Integer
k = DCount("номер1", "составление наряда2", "должность='" & Me.должность & "' and номер1=" & Me.Номер1 & "")
MsgBox k
End Sub
Используйте аналогично dcount для Вашего случая
Вопрос: Как получить значение поля счетчика после добавления через rst.AddNew ?

Добрый день всем.

Есть таблица, в ней, само собой, первое поле - Код (счетчик), и несколько других.
Через код VBA добавляю в данную таблицу новую строку (через метод AddNew), заполняю поля, делаю метод Update.
При этом значение поля со счетчиком добавляется само.
Насколько я понимаю, при добавлении текущая строка рекордсета не меняется (проверял через AbsolutePosition).

Вопрос: как мне получить то значение, которое было автоматически присвоено полю Код (счетчик)? Учитывая, что добавленная строка, я так понимаю, не становится текущей (и в учебнике читал, что после метода Update текущей становится строка, которая была текущей до добавления).
Пытался "поймать" это значение в момент ДО обновления - так его на тот момент просто еще нет, я так понимаю...

Думал, может просто после добавления строки сделать MoveLast и взять значение счетчика (ведь строка-то по-любому добавляется в конец таблицы). Но потом подумал, что при многопользовательской работе с базой этот вариант не прокатит, т.к. в это же время другой пользователь может добавить еще строку - и тогда мы получим уже не то значение поля счетчика, которое нужно...

Может, я придумал себе проблему на пустом месте?) Буду признателен за советы.
Ответ: Вопрос снимается. Неправильно "ловил" значение. Таки оно добавляется еще до метода Update, и его можно запросто взять.

Добавлено через 1 минуту
mobile, Спасибо, я как раз уже и сделал по первому из тех способов, которые там перечислены. Но все равно полезно почитать про другие.
Вопрос: Как-то достать значения параметров

Тестировщики гоняют приложение...
Иногда надо достать параметры для запросов... из просматриваемых сессий...

UPDATE "User" SET "LastActivityDate" = :p0 WHERE "UserId" = :p1


Как-то можно достать значения параметров ?
Ответ:
ORA__SQL
pravednik
v$sql_bind_capture
dba_hist_sqlbind
Так ведь туда попадают значения при которых был hard parse?

Ну, не совсем. При хардпарсе и далее каждые 15 минут вроде для текущего курсора.
Но должен был указать. Спасибо
Еще один вариант - это bind_xml в v$sql_monitor
Вопрос: Посчитать количество и сумму всех строк в таблице за определенный период

В документах за дату 01.11.2015 подсчитать количество и сумму всех строк (с любым артикулом).
Название таблицы DOC-документы
Имя поляТип данныхКомментарий
IDintegerПервичный ключ
Numdocvarchar2номер документа
datedocdateдата документа
podrintegerссылка на подразделение
postintegerссылка на поставщика
Название таблицы DOCM-товарные строки документов
Имя поляТип данныхКомментарий
IDintegerПервичный ключ
ID_DOCintegerссылка на документ: doc.id
Articulvarchar2артикул товара
qtynumberколичество
pricenumberцена
Название таблицы SPRNOMEN-справочник товаров
Имя поляТип данныхКомментарий
articulvarchar2артикул товара
namevarchar2наименование товара
edizmvarchar2единица измерения ('ШТ','КГ', и т.д.)
Верен ли мой запрос?
SQL
1
(SELECT COUNT(*) FROM DOC WHERE datedoc BETWEEN '01.11.2015') UNION (SELECT SUM(*) FROM DOC WHERE datedoc BETWEEN '01.11.2015')
Ответ: Ну, количество документов в таблице DOC за дату 01.11.2015:
SQL
1
SELECT COUNT(*) FROM doc q WHERE trunc(q.datedoc)=to_date('01.11.2015','dd.mm.yyyy')
--dd.mm.yyyy - форматы даты.
С суммой не совсем понятно. Тебе нужна сумма записей во всех трех таблицах? Тогда я бы делал это через блок. Или о сумме чего идет речь?
Вопрос: Ввод данных в поле через защиту паролем

Всем очень добрый день!

Возникла необходимость реализовать в БД защиту ввода данных в поле через пароль, дабы контролировать некоторые из совершаемых операций.

Почему такой способ защиты в подробности вдаваться не буду, скажу только, что подтверждение операции списания материалов могут делать разные люди (до 10 чел/полчаса) и чтобы каждый раз не выполнять вход под своим ИНН в БД, возникла идея запаролить конкретное поле или пару полей, имеющих для процедуры списания сакрально- ответственное значение.

В прилагаемом шаблоне это одно из полей - "ФИО". Подскажите пожалуйста где искать подобное решение или может кто-то может на живом примере показать.

механизм следующий:
Открывается форма "Подпись" в ней имеем поле "ФИО", инструкция по вводу данных написана в самом поле, теперь - главное.
Как реализовать саму процедуру идентификации пользователя с дальнейшей записью его ФИО в это поле, основываясь на данных из таблицы Access.
Т.е. машина должна проверить кому из пользователей принадлежит данный пароль или идентификатор и вписать его ФИО(соответствующее паролю в таблице) в поле Подпись.[ФИО] В случае неправильно набранного пароля откатить назад.

Спасибо за понимание и терпение. Шаблон БД d Access2007 прилагаю.
Ответ: Нормально ставится. Закрывается форма для ввода пароля, а в основной форме, которая с "запароленным" полем ,фокус переходит на след. поле.
Вопрос: значение поля предыдущей строки аксесс, запрос SQL (без VBA)

Коллеги, всем привет!

Возник затуп с простым вопросом , как при помощи одного SQL реализовать запрос ,в котором в дополнительном расчетном поле будет выводиться значение поля предыдущей строки.

Есть к примеру таблица ДОХОДЫ, с двумя полями ПЕРИОД (текст) и ДОХОД (обычное число)

Как написать правильно запрос таким образом, чтобы дополнительное поле в запросе выводило значение поля ДОХОД предыдущей записи?

В VBA не надо . Пример где снимается значение с привязкой к к значению счетчика также не надо. Нужно именно предыдущей строки.
Ответ:
Akina
Пользуясь методикой, составьте запрос самостоятельно. Причём не весь сразу, а пишите фрагменты по шагам, постепенно наращивая текст запроса. Результат работы (не конечный, а именно по шагам с пояснениями) - выкладывайте. Если в нём будут ошибки - я покажу где и объясню как и почему.


В общем то получается запрос вида:

SELECT доходы.счетчик, доходы.доход, доходы.период,(SELECT TOP 1 доходы2.доход FROM доходы AS доходы2 
WHERE  доходы2.период <доходы.период ORDER BY  доходы2.период DESC) AS предыдущее_значение
FROM доходы ORDER BY доходы.период


Каюсь, что нашел алгоритм в шпаргалке, на этом сайте. Но разобрался. Ключевым моментом здесь является именно сортировка основной таблицы и её копии в разных направлениях с выборкой первой записи из копии, отсортированной в обратном порядке.
Вопрос: SSRS как получить значение из i строки dataSet

Добрый день! Нужно в textbox поместить из второй (номер строки прописывается через параметр) строки dataSet колонки с названием ColumnName. Как это реализвовать? Первая так: =First(Fields!ColumnName.Value, "DataSet")
Ответ: Soldat104,

вместо TextBox лучше использовать таблицу с одной ячейкой. Привязываем к нужному датасету, а в Фильтре пишем условие. Проект прилагаю.

К сообщению приложен файл (Тестовый проект.zip - 12Kb)
Вопрос: Как получить значение из предыдущей строки результата?

Извините конечно... я тока начинаю изучать SQL так что сыльно не бейте)))) помогите...
Как получить значение из предыдущей строки результата?
Ответ: Не знаю на сколько правильно... Я решил так:

Код SQL
1
2
3
4
5
6
7
SELECT 
[DateT] AS 'Дата проведения',
(SELECT ISNULL(SUM([Prihod]) - SUM([Rashod]),0) FROM [dbo].[Ostatok] AS D1 WHERE D1.[DateT] < D2.[DateT]) AS 'Нач.остаток',
[Prihod] AS 'Приход',
[Rashod] AS 'Расход',
(SELECT SUM([Prihod]) - SUM([Rashod]) FROM [dbo].[Ostatok] AS D1 WHERE D1.[DateT] <= D2.[DateT]) AS 'Кон.остаток'
 FROM [dbo].[Ostatok] AS D2


Спасибо за ответы!
Вопрос: Вставка значения в auto incr поле

Здравствуйте!

Вообще мне необходимо из mysql перенести данные в sql server.
Пробовал разные тулзы, но ничего дельного не получилось (наверно потому что в новых таблицах немного подругому названы поля, и немного другие типы полей).

Решил что лучше написать скрипт и самому наинзертить. Но наткнулся на то что insert неработает на auto incr поле если я явно в него записываю свое значение. Например:
Код SQL
1
INSERT INTO tbl(id,name) VALUES (1,'blabla')
Ошибка мол "Невозможно вставить явное значение для столбца идентификаторов... когда параметр IDENTITY_INSERT имеет значение OFF".

Пытался перед этим делать так
Код SQL
1
SET IDENTITY_INSERT tbl ON
но тоже самое.
(поле id уникальное, primary key, autoinr.)

Как быть, куда копать?

Большое спасибо!
Ответ: Теперь пытаюсь экспортировать с локальной бд на удаленный сервер.
Инзертить на удаленную машину пару млн строк довольно неприятно, юзаю тулзу SSMS, она выдает ошибку "Не удалось вставить данные в столбец "id", доступный только для чтения."
Поскольку теперь я юзаю тулзу, писать SQL особо то негде.
Как я понимаю надо снять ограничение с поля (auto incr), непойму как сделать, куда копать?

Спасибо!

P.S. Удаленный сервер - azure.

Добавлено через 8 минут
Вот черт, пол дня гуглил не нашел, а после написания поста наткнулся на решение, оказывается в SSMS в окне "Выбор исходных таблиц и представлений" нужно тыкнуть на нужные таблицы, нажать кнопку снизу "Изменить", там поставить галочку "Разрешить вставку в столбец идентификаторов".
Также внимательно следите за кодировкой своего и удаленного сревера бд при экспорте, должна совпадать.
Вопрос: Объединение значений в одной строке

Уважаемые форумчане, помогите пожалуйста с запросом !

Есть динамическая таблица EQUIPMENT с полями:
SKLAD
NAME


С применением запроса
SELECT SKLAD, NAME
FROM EQUIPMENT
GROUP BY SKLAD, NAME
получается следующее:

SKLAD NAME
000001 Молоток
000001 Рубанок
000001 Гвозди
000001 Пила
000001 Топор
000005 Лента
000005 Шланг

А хотелось бы получить одной строкой SKLAD, а в поле NAME значения через запятую:

SKLAD NAME
000001 Молоток,Рубанок,Гвозди,Пила,Топор
000005 Лента, Шланг
Ответ:
Владислав Колосов
"Зачем вам миллион строк в отчете?". Заговор, не иначе!

Аудит?