powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
16 сообщений из 16, страница 1 из 1
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136090
Всем привет!
Хочу обновить данные в фале DB из файла GetFrom по частичному совпадению Имени
Никак не могу разобраться в чем ошибка. Код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub UpdateFrom()
Dim mySQL As String, myConnect As Object
Dim DataRange As String, strAddress As String, Target, wbTarget As Workbook
Dim FSO As FileDialog
    Set FSO = Application.FileDialog(msoFileDialogFilePicker)
    
    With FSO
        .AllowMultiSelect = False
        .Show
    End With
    Set wbTarget = GetObject(FSO.SelectedItems(1))
    strAddress = Replace(ThisWorkbook.Sheets(1).Cells(1, 1).CurrentRegion.Address, "$", "")
    DataRange = "[" & ThisWorkbook.Sheets(1).Name & "$" & strAddress & "]"
    Set myConnect = CreateObject("ADODB.Connection")
    myConnect.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
           "Data Source=" & wbTarget.FullName & ";" & _
           "Extended Properties=""Excel 12.0;HDR=YES"""
    Target = "[" & wbTarget.Sheets(1).Name & "$" & Replace(wbTarget.Sheets(1).Cells(1, 1).CurrentRegion.Address, "$", "") & "]"
    mySQL = "UPDATE " & Target & " SET [Имя]=" & DataRange & ".[Имя] WHERE [Имя] LIKE 'Иванов%'"
    myConnect.Execute mySQL
End Sub



Выдает ошибку "Отсутствует значение для одного или нескольких параметров"
Всем заранее большое спасибо!!
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136092
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
UPDATE [Sheet1$A1:B4] SET [Имя]=[Лист1$A1:B4].[Имя] WHERE [Имя] LIKE 'Иванов%'

Ну запрос - ерунда какая-то. Что конкретно нужно сделать? Обновить одну строку одним значением? Тогда надо получить это значение. Обновить соответствующие значения по каким-то критериям? Тогда запрос должен быть более сложным и содержать как минимум JOIN-ы.

А здесь просто попытка присвоить одному рекордсету другой рекордсет. SQL так не работает
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136094
Shocker.Pro, хотелось обновить значение по критериям, можно Вас попросить привести пример такого запроса?

Большое спасибо!
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136097
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Что конкретно нужно сделать?
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136098
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начинающий VBA Coder
привести пример такого запроса?

различные примеры
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136108
Shocker.Pro
Что конкретно нужно сделать?

Хотел обновить значение для Иванова по части совпадения имени.

Большое спасибо!
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136132
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не ответ. Какое значение, по какой части, в источнике? в приёмнике?
Если в одной таблице есть
Иванов1
Иванов2
а во второй
Иванов4
Иванов3

Что куда должно обновляться?
Не ленись написать ТЗ, я уже гораздо больше букв чем ты написал в этом топике, а кому из нас нужно решение проблемы?
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136231
Прошу прощения, подразумевается, что в таблице книги DB и таблице книги GetFrom один Иванов.
Из файла GetFrom с таблицы на Лист1 нужно обновить данные в файле DB на листе Sheet1 для Иванова, по части совпадения текста в ячейке таблицы в файле GetFrom.

Заранее большое Вам спасибо!
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136232
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз: непонятно, части чего должны совпадать.

Есть некая запись в таблице GetFrom
Есть некая запись в таблице DB
Есть LIKE 'Иванов%'

Вот что с чем и как в этом треугольнике должно совпадать?
И если в запросе будет не LIKE 'Иванов%', а LIKE 'Ив%', к примеру, то что в этом случае должно обновляться? Должна ли запись 'Иванов' в DB обновляться из записи 'Ивлеев' в GetFrom
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136233
Like 'Иванов%' - это константа, если можно так выразится, - меняться не будет.

Файл DB - это файл с таблицей, запись в которой нужно обновлять из таблицы с файла GetFrom.

Задумка была, чтобы по совпадении имени (в моём случае - это Иванов), обновлялась запись в таблице файла DB.
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136235
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начинающий VBA Coder
Like 'Иванов%' - это константа, если можно так выразится, - меняться не будет.
Тогда почему нужно писать Like 'Иванов%' вместо ='Иванов 2222'

Этот Like - он запутывает ситуацию.

Начинающий VBA Coder
Файл DB - это файл с таблицей, запись в которой нужно обновлять из таблицы с файла GetFrom.
Озвучь пожалуйста четко, по какому критерию выбирается запись из файла GetFrom чтобы получить запись для конкретной записи в файле DB?
В файле GetFrom есть НЕСКОЛЬКО строк. По какому именно критерию должна быть найдена строка среди них, данные из которых должны попасть в строку 'Иванов 2222'?
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136236
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начинающий VBA Coder
по совпадении имени (в моём случае - это Иванов)
в твоем случае нет никакого имени Иванов. В исходной таблице есть имя Иванов 2222, в источнике есть Иванов 22224. Ни то, ни другое - не Иванов.
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136237
Прошу прощения, пример неудачный.

Код: vbnet
1.
UPDATE [Sheet1$A1:B4] SET [Имя]=[Лист1$A1:B4].[Имя] WHERE [Имя] LIKE 'Иванов 2222%'



Задумка была такая: есть 2 таблицы, из первой таблицы данные попадают во вторую при условии что запись во второй таблице (которую обновляем) существует и часть имени совпадает.

Если просто написать:
Обновить данные во второй таблице, вторая таблица.Имя = первая таблица.Имя Где вторая таблица.Имя Частично совпадает с именем из первой таблицы

Прошу прощения, что Вас запутал.
Большое спасибо!
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136243
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Будет что-то типа такого (упрощенно)
Код: vbnet
1.
2.
3.
4.
5.
UPDATE destination
SET destination.Имя= source.Имя
FROM DB AS source
INNER JOIN GetFrom AS destination
ON destination.Имя = LEFT(source.Имя, LEN(destination.Имя))

если, конечно, эксель поддерживает такого рода запрос на обновление
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136250
Shocker.Pro, большое спасибо!

Пойду пробовать.
...
Рейтинг: 0 / 0
Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
    #40136273
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ну я source и destination кажется спутал, ну подкорректируешь
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Ошибка при обновлении значений таблицы Excel при помощи SQL запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]