Появился один оперативный вопрос по запуску сохраненной процедуры на сервере MS SQL (запрос на добавление, с двумя условиями). Создал процедуру на сервере ,задал в процедуре переменные, @good и @comments. Все создалось , и без ввода параметров обращение к процедуре отрабатывает на ура . Естественно добавляются в таблицу пустые строки, так как ничего не передается, значение переменной по умолчанию потому что NULL.
Помогите пожалуйста, как ввинтить передачу двух переменных на сторону сервера из VBA. (два поля на форме, текстовые). Само обращение к процедуре работает:
....
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim prm1 as ADODB.Parameter 'так можно?Dim prm2 as ADODB.Parameter ' ???Set conn = New ADODB.Connection
conn.ConnectionString = "...актуальная строка соединения...."
conn.Open
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText = "TEST_INSERT"
cmd.CommandType = adCmdStoredProc
' и здесь как то нужно передать два параметра - значения двух полей с формы
cmd.Execute
conn.Close
Set conn = NothingSet cmd = Nothing
....
Плиз хелп. Писать типа ...Execute("INSERT INTO tbl ....") итд итп не хочется , так как хочу отработать полноценную передачу переменных в процедуру
Я тут столкнулся с проблемой производительности. Приложение с разделенной базой, многопользовательское, на клиенте довольно сложная логика, в обычном режиме непосредственно с базой большого обмена нет, все работает нормально. Но потребовалось прикрутить импорт из Экселя. После получения оносительно короткой строки с данными и обработки, при сохранении идет довольно интенсивный обмен данными с базой, любое обращение к базе занимает 100-150 микросекунд, в результате при медленной сети сохранение одной строки занимает порядка полутора секунд. Если же бэкэнд находится на той же машине, то 1000 строк сохраняются за несколько секунд.
Возникла идея: поместить дополнительную базу с логикой импорта на тот же файловый сервер, где находится бэкэнд, клиентское приложение копирует файл импорта туда же и удаленно запускает импорт, получая в ответ логи и сообщения.
Кто-нибудь делал такой вот третий уровень в Акцессе, своего рода сервер приложений?
Не предлагайте переход на серверную базу, там у клиента свои заморочки, это ему не подходит.
Добрый день! Есть Форма на ней лист бокс и подчиненная форма (см пример). Как сделать что бы при событии в лист боксе к примеру клик, обновить данные в подчиненной форме. и Все это сделать чере VBA. Заранее Спасибо! Для гуру уже файл подготвил туда напишите кодик, а то я всю голову сломал как это сделать!
Выполняю лабораторную работу, ее суть в том, чтобы в сгенерировать определенное количество случайных данных в таблицу и посчитать время их выполнения.
OptionCompare Database
Sub randomDigits(tableName, fldOt, fldDo, n)
Start_time = Time()
Dim i
Randomize
With CurrentDb.OpenRecordset("select * from [" & tableName & "]")
For i = 1 To n
.AddNew
!number = Rnd(i) * (fldDo - fldOt) + fldOt
.update
NextEndWith
End_time = Time()
EndSubSub button_Click() // процедура для считывания данных из соответствующих полей формы
n = Number19()
fldOt = number_ot()
fldDo = number_do()
randomDigits "table", number_ot, number_do, n
EndSub
Как можно подсчитать не время выполнения этого кода, а именно время от начала до конца построения нужного кол-ва записей в базе данных и вывести в форму?
Немного истории. Разрабатываю БД для заказчиков. В ней есть процедура создания документа Word при помощи шаблона. Сам шаблон хранится в БД. При необходимости он выгружается на диск в папку с БД, а затем документ создаётся с использованием этого шаблона. В один "прекрасный" момент это перестаёт работать. Начал искать решение в и-нете. Нашел статьи, где говорилось, что эта ошибка возникает при повреждении шаблона. Но! Оказалось, что создание документа перестаёт работать тогда, когда программа находится на сетевом диске, а на локальном всё работает. Полез копаться глубже. Оказалось, что если создаёшь документ без шаблона, он создаётся. Если создаёшь документ с использованием шаблона, который находится в папке Шаблоны в твоём профиле - он создаётся. Проблема возникает в том случае, если шаблон находится на сетевом диске. ------------------------------------------------------------- А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
Как можно источником строк раскрывающегося списка сделать 1-числа 12 прошедших месяцев от сегодняшней даты? Например сегодня в списке должно быть: 01.10.2017 01.09.2017 01.08.2017 01.07.2017 01.06.2017 01.05.2017 01.04.2017 01.03.2017 01.02.2017 01.01.2017 01.12.2016 01.11.2016
а в следующем месяце: 01.11.2017 01.10.2017 01.09.2017 01.08.2017 01.07.2017 01.06.2017 01.05.2017 01.04.2017 01.03.2017 01.02.2017 01.01.2017 01.12.2016
Всем доброго. Отчет с подчиненным. Не могу понять как сделать так чтобы последняя строка подчиненного при условии того что есть вторая страница главного отчета переносилась на вторую страницу с колонтитулами. Нужен просто совет.
Прошу помочь мне с такой задачей: В файле "basa" содержится база данных, в которую нужно вносить данные из различных екселевских книг(Шаблон). Необходимо вести поиск по критерием(в данном случае это номер счета) и заполнять недостающие данные в базу.
Где-то что-то было. Не могу найти. У кого есть код для поиска запросов в базе, которые типа мусора валяются. Типа одноразовые запросы. ------------------------------------------------------------------------ Спасибо за ответ.
Воскресенье, 01 Октября 2017 г. 22:38
+ в цитатник
Всем добрый вечер! Кто может подсказать как в Аccess можно сделать автоматический запрос? Что бы Аccess каждые 10 минут искал в БД обновляемую информацию и когда найдет выводил на экран результаты поиска. Или это не возможно с помощью Аccess?
Всем привет! Мне нужно импортировать таблицу эксель в аксесс. делаю это следующей командой
SELECT*INTO newtable23
FROM(SELECT CCD_0D_02,CCD_02_01,CCD_02_02, CCD_02_03, CCD_02_04, CCD_02_05, CCD_02_06, CCD_02_07, CCD_02_08, CCD_02_09, CCD_02_10,
CCD_08_01, CCD_08_02, CCD_08_03, CCD_08_04, CCD_08_05, CCD_08_06, CCD_08_07, CCD_08_08, CCD_08_09, CCD_08_10,
CCD_09_01, CCD_09_02, CCD_09_03
FROM 2014
WHERE CCD_33_01_ between "7304000000" and "7306999999")
Этот код работает, но в созданной таблице access в некоторых столбцах меняется тип данных с числового на текстовый. Подскажите, как можно сохранить исходное форматирование экселя?
Всем привет! Мне нужно импортировать таблицу эксель в аксесс. делаю это следующей командой
SELECT*INTO newtable23
FROM(SELECT CCD_0D_02,CCD_02_01,CCD_02_02, CCD_02_03, CCD_02_04, CCD_02_05, CCD_02_06, CCD_02_07, CCD_02_08, CCD_02_09, CCD_02_10,
CCD_08_01, CCD_08_02, CCD_08_03, CCD_08_04, CCD_08_05, CCD_08_06, CCD_08_07, CCD_08_08, CCD_08_09, CCD_08_10,
CCD_09_01, CCD_09_02, CCD_09_03
FROM 2014
WHERE CCD_33_01_ between "7304000000" and "7306999999")
Этот код работает, но в созданной таблице access в некоторых столбцах меняется тип данных с числового на текстовый. Подскажите, как можно сохранить исходное форматирование экселя?
Код, малость видоизмененный(Выдает ошибку: Ошибочное или пропущенное зарезервированное слово или аргумент в инструкции SELECT или неверная пунктуация):
Private Sub Комбинированная3_AfterUpdate() Dim b As String b = " SELECT Начальники.Фамилия," & _ " Сотрудники.Фамилия," & _ " FROM Начальники " & _ " INNER JOIN Сотрудники " & _ " ON Начальники.Отдел = Сотрудники.Отдел = '" & Me.Комбинированная3.Value & "'" Me.RecordSource = b End Sub
В событии Form_KeyDown перестало восприниматься сочетание клавиш Ctrl-F5. При этом по отдельности и та, и другая клавиша распознаются нормально. Сочетания Ctrl с другими функциональными клавишами F* тоже распознаются без проблем.
Запускаю старые проекты - среда не распознает сочетание ctrl+f5 для запуска. В чем дело - так и не понял. Вроде бы мелочь - но нормально работать нельзя. Мистика какая-то... .......................................................... .......................................................... Проблема решена. Произошел глюк в профиле клавиатуры, в результате F5 работала как Esc
Но у меня во всех прочих случаях F5 работает именно как F5, и только вот в паре с Ctrl что-то не то. То же самое можно сказать и про Ctrl - в основном нормально, а в паре с F5 что-то не то.
Что такое "профиль клавиатуры" и где его смотреть, не знаю. Да и нужен ли он?
Такой вопрос- с помощью SQL запроса из Делфи записываю в таблицу ACCESS данные. После этого выполняю к этой таблице другой запрос по определению максимального значения одного из столбцов и сохраняю это значение в переменной. Выполняется это в цикле и почему- то этой переменной правильное значение присваивается не всегда. Периодически , а иногда и часто появляется 0 . Такое ощущение, что данные не успевают сохраняться в таблице. Пробовал увеличивать интервал между записью и запросом до 4-х секунд, но результата не наблюдается. В чем может быть дело?