Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Массив в SQl запрос
 
Да спасибо, так хорошо
Массив в SQl запрос
 
Есть определенное количесво ячеек, которые нужно засунуть массив и использовать его в качестве проверки наличия новых записей на сервере.
Приблизительно в колонке
иванов
петров
сидоров

ну и в строке запроса должно быть чтото типа
Код
strSQL = "select * from Workers where UserID NOT IN ('иванов','петров','сидоров')"
Попытался зауснуть в массив
Код
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
 
     Dim mArray() As Variant
mArray() = Range(Cells(7, 1), Cells(LastRow, 1)).Value
Но как присобачить этот массив в SQL запрос?
Изменено: shaade - 10.07.2018 15:02:58
Выпадающий список из SQl запроса
 
Благодарю)
Выпадающий список из SQl запроса
 
Собственно вопрос. как лучше сделать выпадающий список из результатов SQl запроса?
Думал в сторону Форматирования списка как таблица , но что-то не выходит... Точнее увеличить таблицу получается, а уменьшить -уже никак...
Изменено: shaade - 13.06.2018 16:10:48
Выпадающий список по 2 значениям без дублей
 
вот и я за 2 дня ничего не придумал...
Выпадающий список по 2 значениям без дублей
 
Гляньте файлик, несколько позиций работ для одного трактора с разным прицепным
Выпадающий список по 2 значениям без дублей
 
Bema - спасибо, для 1 ячейки супер. А вот если несколько?
Выпадающий список по 2 значениям без дублей
 
Да, на самом деле проверил - 80 видов работ, 70 прицепов... Писать всем формулы - ужасужас
Выпадающий список по 2 значениям без дублей
 
Bema,Очень неуниверсально. Если работ больше, прицепов больше, я не знаю их количества...
a.i.mershik Добавил данных, исходная таблица очень большая. Я делал по тому примеру - посмотрите сисок выделенный красным, меня волнуют дубли,
Я может слегка неправильно задачу нарисовал.
Выбираем из списков трактор и вид работ - в списке прицепов должны быть только допустимые согласно таблицы.
В рабочем файле с помощю Смещ+поискпоз удалось добиться выбора правильных данных, но почему-то с многократынм повторением. Там была формула вида
Код
=СМЕЩ(Norm!$C$1;ПОИСКПОЗ($M$2;Norm!$B$2:$B$500;)-1;;ПОИСКПОЗ($B$14;Norm!$A$2:$A$500;)-ПОИСКПОЗ($M$2;Norm!$B$2:$B$500;)+СЧЁТЕСЛИ(Norm!$A$2:$B$1000;$B$14);1)

Получил првильный список из повторяющихся блоков. Почемуто 12 раз повторился блок как на скрине
Когда меняю вид работ- добавляет еще и еще в список агрегатов)))
Изменено: shaade - 05.06.2018 18:25:08
Выпадающий список по 2 значениям без дублей
 
прицепов может быть несколько, это сильно укороченная таблица
Выпадающий список по 2 значениям без дублей
 
Вроде бы искал, но похожего не нашел.
Есть 2 листа - в одном таблица, в другом выпадающие списки.
Нужно по виду работ и трактору сделать выпадающий список с подходящим прицепом.
Но как мы видим- получаються странные дубли записей, прицеп один но много раз....
Как бороться с дублями выпадающего списка Вид работ- понятно, я не хотел сюда вставлять...
Изменено: shaade - 05.06.2018 09:03:30
запись в SQL базу
 
Вы не поняли вопроса. Я знаю что означают эти ошибки. Мне нужны их коды для интерпретации для юзера.И эту статью я читал
Каким кодам ВБА отвечают эти коды, чтоб я мог подменить эти ошибки своими MsgBox , чтоб юзер понимал что от него хочет Эксель
запись в SQL базу
 
Ден, спасибо.. но как говорится вопросов больше чем ответов
Ребят, занялся перехватом ошибок, вроде бы дело несложное, если что-то стандартное, но вот получил ошибку при попытке записать в колонку с уникальными значениями дублирующее значение
run-time error '-21472117873(800040e2f)':Violation of Primary key construct 'PF_mainp$'. Cannot duplicate key in object 'dbo.mainp$'.
Мне то все понятно, но юзеру хотелось бы донести ошибку повнятней, что-то типа "дубль, не записано"
Ну и вдогонку
run-time error '2147467259(80004005) [DBNETLIB]{ConnectionOpen(Connect()).]Sql Server does not exist or acsess denied
Никак не могу нагуглить код такой ошибки чтоб занести в кейс...
Код
Case ?????: MsgBox "дубль, не записано", vbCritical
Изменено: shaade - 25.05.2018 15:24:13
запись в SQL базу
 
ден, что-то я видимо не понял...
Дата документа конвертируется в значение типа 20180525
Код
NewDateDoc = Format(CDate(Sheets("Forma").Range("D5").Value), "yyyyMMdd")
при попытке отправить запрос получаю ошибку
Код
strSQL = "select FuelEnd from mainp$ where Rnumb='" & RnumbIn & "' and '" & NewDateDoc & "'-DateDoc=(select min(NewDateDoc-DateDoc)) "
то есть запрос фактически выглядит как
Код
select FuelEnd from mainp$ where Rnumb='25932 ВО' and 20180523-DateDoc=(select min(20180523-DateDoc))
и ошибка
Msg 206, Level 16, State 2, Line 1
Operand type clash: date is incompatible with int
И в запросе, есле его в Query исполнять - подчеркивает DateDoc - invalid column name 'DateDoc'
Хотя с простеньким запросом  все ок
Код
select FuelEnd from mainp$ where Rnumb='25932 ВО' and DateDoc='20180523' 

Со временем - я уже понял, что надо будет менять тип с date datetime, так будет проще...
И все же ЧЯДНТ?)
запись в SQL базу
 
Спасибо, ребят, реально код улучшается, но пока со сложными запросами в SQL проблемы..
В таблице mainp$ есть поля DataDoc -дата документа и FuelEnd - остаток бензина после поездки. Хотелось бы в следующий документ подтянуть остаток з прошлой поездки. Как в запросе указать, что нужно подтянуть ближайшее к дате нового документа значение? Поездок за день может быть несколько, времени поездок нет, Нужно взять значение из последней записи...
Может немного сумбурно, но как то так
Код
select distinct FuelEnd from mainp$ where Rnumb='25932 ВО' ......?
Изменено: shaade - 25.05.2018 09:49:51
запись в SQL базу
 
Спасибо, Сокол, разобрался.. Можете еще ткнуть в сторону  получения сообщений об ошибке конекта, ошибке записи, удачной записи и контроля уникальности записи
Изменено: shaade - 24.05.2018 14:20:40
запись в SQL базу
 
Ввел вас в заблуждение))
Проблема в том, что я пытаюсь записать число из ячейки типа 17,25 во float, где я так понимаю, используется точка...как без дополнительних конвертаций это сделать?
данные периодически будут выгружаться в Эксель для формирования отчетности.. как избежать двойной конвертации?
Изменено: shaade - 24.05.2018 11:54:08
запись в SQL базу
 
Спасибо за поддержку, вы лучшие) С горем пополам научился отрпавлять из формы в SQL , используя переменные. Возникла проблема. При попытке отправить пустое значение - получаю ошибку error converting data type varchar to float
В Экселе в выбранной ячейке формула, которая в данной вариации заполнения сейчас имеет нулевое значение. Как поправить? Флоат же может быть 0?
Код
Operation = Cells(Row, 2).Value

strSQL = "Insert into mainp$(Operation)value('" & Operation & "')
Изменено: shaade - 23.05.2018 16:36:38
запись в SQL базу
 
Да, не буду скрывать что выковырял нужное из других решений,
А простите, в чем проблема этого?Работает же... Я понимаю, когда это ваше хобби или работа. Но иногда возникают спонтанные, иногда даже одноразовые задачи и изучать язык для написания красивого кода просто нет времени и сил.
Код
Set objMyRecordset.ActiveConnection = objMyConn        objMyRecordset.Open strSQL
запись в SQL базу
 
Я стараюсь) Я наверно плохо обьяснил. Я не понимаю, как перебирать значения, которые будут писаться?
Организоавать чтото типа 2 циклов перебора колонок и ячеек, или лучше массивы?
Изменено: shaade - 22.05.2018 16:43:25
запись в SQL базу
 
ДОброго времени суток. Пробую себя немного в ВБА Есть лист Экселя и SQL база. Поля файла и базы - идентичны.
Как заставить перебирать диапазон? Например A2:Z30
Присваивать каждому значению переменную?
В коде 'Sheets("A2")','Sheets("B2") - для понятия проблемы
Код
Sub PutDataToADOWork()
   '
        Set objMyConn = New ADODB.Connection
        Set objMyRecordset = New ADODB.Recordset
        Dim strSQL As String

    
        objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=serv;Initial Catalog=agro;User ID=base;Password=123456;"
        objMyConn.Open

   
       strSQL = "Insert into mainp$(DateDoc,Summa)values('Sheets("A2")','Sheets("B2")')"

        Set objMyRecordset.ActiveConnection = objMyConn
        objMyRecordset.Open strSQL
    
        

objMyConn.Close
End Sub
Страницы: 1
Наверх