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

Страницы: 1
WinHttpRequest, JSon: не видно параметров
 
Вопрос снят. Всё правильно. Проблема была на стороне сервера.
WinHttpRequest, JSon: не видно параметров
 
Друзья, привет!
Пытаюсь грузить данные в excel через запрос к вебстранице.
Объявляю sUrl, sJSon
в sJSon записываю строку
Код
{"fields":{"event_time":{"field":"event_time","source":"event_time=decade","aggr":"no","timezone":"Europe/Moscow"},"click":{"field":"click","source":"click","aggr":"count","type":"int"}},"filters":[{"source":"event_time","op":"BETWEEN","expr":"today,today 23:59:59"}]}

далее запускаю:
Код
Dim oRequest As WinHttp.WinHttpRequest
Dim sResult As String

Set oRequest = New WinHttp.WinHttpRequest
With oRequest
    .Open "POST", sUrl, True
    .SetRequestHeader "Content-type", "application/json; charset=UTF-8"
    .Send sJSon
    .WaitForResponse
    sResult = .ResponseText
    MsgBox sResult
End With

А в ответ получаю:


Ничего не получается, чтобы запрос вернулся с ответом. Параметры, видимо, не передаются.

Подскажите, пожалуйста))
Ошибка при повторной вставке данных в базу Access, первая вставка после открытия файла проходит успешно
 
Цитата
B.Key написал:
Не видя Вашей БД или хотя бы схемы данных
Вот единственная табличка
id_rowdsc
11
22
221
23sdf
25sdfsg
26sdfsdf
А вот полный скрипт excel, который все это безобразие творит:
Код
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count = 1 And Target.Columns.Count = 1 And Target.Row > 1 And Target.Column = 2 Then
Dim r As Integer
    Call ins(Target.Value, ActiveSheet.Cells(Target.Row, 1))
End If
End Sub
Public Sub crt_cn()
If cn Is Nothing Then
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\losinets-ds\Desktop\1.accdb"
End If
End Sub
Public Sub load()
Application.EnableEvents = False
ActiveSheet.Range("a2:b13000").ClearContents
Dim rs As ADODB.Recordset
Dim i As Integer
Call crt_cn
Set rs = New ADODB.Recordset
rs.Open _
    Source:="select id_row,dsc from tbl", _
    ActiveConnection:=cn, _
    CursorType:=adOpenDynamic, _
    LockType:=adLockReadOnly, _
    Options:=adCmdText
i = 1
While Not rs.EOF
    i = i + 1
    ThisWorkbook.Sheets("a").Cells(i, 1) = rs.Fields("id_row").Value
    ThisWorkbook.Sheets("a").Cells(i, 2) = rs.Fields("dsc").Value
    rs.MoveNext
Wend
Application.EnableEvents = True
End Sub
Public Sub cls_cn()
Application.EnableEvents = True
End Sub
Public Sub ins(str As String, r As Integer)
Application.EnableEvents = False
Call crt_cn
Set rs = New ADODB.Recordset
rs.Open _
    Source:="select id_row from tbl where id_row=" & r, _
    ActiveConnection:=cn, _
    CursorType:=adOpenDynamic, _
    LockType:=adLockReadOnly, _
    Options:=adCmdText
If str = "" Then
cn.Execute ("delete from tbl where id_row=" & r)
GoTo fin
End If
If Not rs.EOF Then
cn.Execute ("update tbl set dsc='" & str & "' where id_row=" & r)
GoTo fin
End If
cn.Execute ("insert into tbl(dsc) values('" & str & "')")
fin:
Application.EnableEvents = True
Call load
End Sub

Ошибка при повторной вставке данных в базу Access, первая вставка после открытия файла проходит успешно
 
Цитата
B.Key написал: Такая ситуация может возникнуть из-за первичного ключа
А каким образом может быть виноват ключ, если проблема только с повторной вставкой в рамках одного открытия файла?
Один и тот же код работает нормально при первом запуске после открытия файла и плохо при последующих.
Ошибка при повторной вставке данных в базу Access, первая вставка после открытия файла проходит успешно
 
Спасибо. Почитаю.
Проблема, похоже, в правах пользователя на ПК. Потому что у меня дома все работает чудесно. На рабочем же, где нет локального админа, всё плохо.
Ошибка при повторной вставке данных в базу Access, первая вставка после открытия файла проходит успешно
 
Цитата
Smiley написал: зачем Вам каждый раз открывать соединение?
С базой может работать сразу несколько людей. Если её кто-то открыл, у других будет проблема.
Ошибка при повторной вставке данных в базу Access, первая вставка после открытия файла проходит успешно
 
Судя по всему оказывается занятым файл базы данных.
Но он не открыт нигде, а connection от первой вставки данных закрыт и почищен.
А вот как его закрыть совсем, понять не могу. Помогает только перезапуск книги excel.

Простите за спам :)
Если не закрывать коннект, а продолжать работать со старым, то все в порядке. Но для порядка хотелось бы закрыть коннект и иметь возможность корректно открыть его снова.
Изменено: Дмитрий Нормуль - 01.10.2015 14:23:12
Ошибка при повторной вставке данных в базу Access, первая вставка после открытия файла проходит успешно
 
Цитата
vikttur написал:
Измените логин в своем профиле
Спасибо. Поправил. Старый логин :)
Ошибка при повторной вставке данных в базу Access, первая вставка после открытия файла проходит успешно
 
Ола, амигос!
Пытаюсь сделать из экселя интерфейс для работы с базой на аксессе. Не спрашивайте почему :)

Создаю коннект, инсерчу в табличку первую запись:
Код
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\losinets-ds\Desktop\1.accdb"
cn.Execute ("insert into tbl(dsc) select '" & str & "'")
cn.Close

В первый раз все проходит успешно. Когда пуляю то же самое во второй раз, вылазит ошибка
Ошибка выполнения '-2147467259(80004005) ": [Microsoft][Драйвер ODBC Microsoft Excel] Операции должен использоваться обновляемый запрос.
Никак не пойму что делать.

Так что делать?))
Изменено: Dmtr Lsnts - 01.10.2015 12:24:44
Изменение ячейки, целой строки, столбца и обращение к макросам с формами из других файлов
 
{quote}{login=@Nik}{date=02.12.2010 10:02}{thema=}{post}Ну можно сделать так: в какой-нибудь столбец И строку ввести какое-то значение, пусть даже пробел, чтоб оно не светилось. При добавлении строк(и) в том столбце образуется щель, равно как и при добавлении столбца(цов) образуется "щель" в строке. Далее, остаётся несложная задача её найти, вот и всё.  
Если же ничего не добавлялось, то параметр Target в событии Worksheet_Change будет содержать изменённую ячейку(ки).  
А вот на счёт четвёртого - тут нужно смотреть конкретно{/post}{/quote}  
 
Щелей делать не буду :) Попробую разобраться. Сообщу о результатах.
Динамические объекты на форме VBA Excel
 
{quote}{login=The_Prist}{date=01.12.2010 05:14}{thema=}{post}Для отслеживания нажатия Enter:  
...{/post}{/quote}  
Похоже, энтер не обрабатывается. После нажатия даже не заходит в обработку события keypress...  
А внутри класса, почему-то нет события Exit...  
 
Сделал по событию кейдаун:  
Private Sub oTxtBx_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)  
If KeyCode = 13 Then  
   MsgBox "нажали Enter"  
End If  
End Sub  
 
Еще раз спасибо. Понимание и знание приемов повысилось)
Динамические объекты на форме VBA Excel
 
{quote}{login=The_Prist}{date=01.12.2010 05:14}{thema=}{post}Для отслеживания нажатия Enter:  
KeyPress  
 
Private Sub oTglb_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)  
   If KeyAscii = 13 Then msgbox "Нажали Enter"  
End Sub  
 
Для отслеживания потери фокуса - Exit  
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)  
MsgBox "Вышли из объекта TextBox1"  
End Sub{/post}{/quote}  
 
Огромное спасибо, о Гуру VBA и Excel'я :)
Изменение ячейки, целой строки, столбца и обращение к макросам с формами из других файлов
 
Всем привет! :)  
Задача:  
При изменении единичной ячейки делаем одно  
При попытке вставить целую строку - другое  
При попытке изменить целый столбец - третье  
При попытке изменить что-либо другое - четвертое.  
 
Все действия делаются из файла, который лежит в этой же папке. Формы, функции и прочее определено в стороннем файле. Действия происходят в открытом.  
 
Задача в том, что имеется 30 людей, у которых свои разные файлы с одной сутью. После каждой модификации определенной процедуры или функции переделывать и перевысылать каждому человеку его новый файл неудобно. Потому решено сделать сопровождающий файл со всем нужным функционалом, который для всех одинаков. Если файл открыт, то проблем, вроде, нет. А если закрыт?  
 
Событие Change обработаю. Но как понять, что это целая строка или столбец? Count'ом проверить, является ли измененная ячейка единичной - легко. А вот с другим сложнее.
Динамические объекты на форме VBA Excel
 
{quote}{login=The_Prist}{date=30.11.2010 05:56}{thema=}{post}Т.к. надо будет отслеживать события - нужны классы. Т.е. Вы при инициализации формы создаете на форме нужное количество контролов(нужных), обработки на нажатия делаете заранее в классах.    
 
Во вложении пример - как-то делал для кого-то на форуме. В нем создаются TextBox-ы. Аналогично можно сделать для любых контролов.{/post}{/quote}  
Отличный пример! Все встало на свои места.  
 
А создавать  новые объекты на форме можно? Чтобы форма изначально была пустая. Можно, конечно, поиграть с видимостью объектов, а сначала создать с запасом, но хочется, чтобы кнопочек и окошек было без излишка.  
 
И как-то реально по клавише "энтер" изменять данные? А то сейчас клавиша энтер переводит фокус на следующий объект. А потери фокуса или подобного события я что-то не нашел... Событие Change не подходит.
Динамические объекты на форме VBA Excel
 
Для повышения отзывчивости и надежности рабочих файлов мне очень захотелось все изменения делать через форму, на которой динамически создаются объекты в зависимости от того, какое действие происходит.  
В Си понятно, как работать. Там вообще много чего понятно) Но стоит задача сделать при попытке изменения любой ячейки:  
"UserForm1.Show  
Dim a() as CommandButton  
<<<какие-то определения, объявления>>>  
if <<<какие-то условия>>> Then  
ReDim a(n) as CommandButton  
CommandButton a(i)=new CommandButton(UserForm1)  
<<<Какая-то обработка новой кнопки>>>  
<<<Привязка к кнопке функций>>>  
End if  
...  
"  
Нужны сигналы и слоты, как в QT. Такое в VBA есть? Или какая-то адекватная замена.
Страницы: 1
Наверх