Из экселя в аксесс...

Программирование на Visual Basic for Applications
Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Из экселя в аксесс...

Сообщение Tuco » 01.12.2003 (Пн) 15:31

Здравствуйте!
Такая проблема возникла. Пишу в макросе вот такой запрос.

Код: Выделить всё
strSQL = "SELECT*FROM [Почтовая рассылка] Where [Имя
организации] = " & """ & strName &"""


Где strName - это переменная. И вместо искомого результата получаю

"Run-time error '3061': Too few parameters. Expected1."

Какой ещё параметр ему нужен, если точно такой же запрос, но не с переменной, а с числом всё работает нормально?
"There's more than one way to do it!"

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 01.12.2003 (Пн) 16:53

С кавычками у тебя что-то не то.
На одинарные поменяй.

Или если там нужны именно двойные, то
"""" & strName & """" - двойные удваивать надо.

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 01.12.2003 (Пн) 17:09

а фиг их знает, какие им нужны, я пробовал и двойные и одинарные... Ответ один и тот же...
"There's more than one way to do it!"

Никита Алмазов
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 06.11.2003 (Чт) 1:58
Откуда: ---

Сообщение Никита Алмазов » 02.12.2003 (Вт) 1:02

Уточни что после знака = должно находится(конечно же с кавычками проблема)
Есть интересный вопрос....

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.12.2003 (Вт) 8:57

Короче. Строки в SQL обрамляются апострофами.
"'"+strname+"'"
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 02.12.2003 (Вт) 9:58

2GSerg:
Я пробовал и апострофы и кавычки, результат:
Код: Выделить всё
Too few parameters. Expected1.


2Никита Алмазов:
после равно идёт переменная, содержащая строку.
"There's more than one way to do it!"

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.12.2003 (Вт) 10:08

Не тупи :)

strSQL = "SELECT * FROM [Почтовая рассылка] Where [Имя
организации] = '" + strname+ "'"
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 02.12.2003 (Вт) 11:45

Ё-моё! Пробовал я уже это! Не помогает! Мало ему параметров, :evil:
Может, там как-то строковые переменные по-особому нужно вставлять?
"There's more than one way to do it!"

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 02.12.2003 (Вт) 12:08

может это и не влияет (хотя, как знать), но для начала измени имена таблиц и полей с русских на английские.
хоть Access и позволяет обзывать объекты по русски, лучше все-таки этого не делать.
а параметрические запросы надо вызывать используя не Recordset, а Command. к стати, где этот запрос используется?
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 02.12.2003 (Вт) 13:44

и еще пробелы в названиях лучше поубирать или заменить на _ этого он тоже не любит
Ничто так не ограничивает полёт мысли программиста, как компилятор

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 02.12.2003 (Вт) 14:04

Пробелы убрал, шрифт на латинский сменил, итог не изменился... Хочет параметр...
2Cyrax: в эксель пытаюсь взять данные из аксесса. А что такое Command? Я ведь методом тыка работаю, что нашёл в книгах и на
этом форуме, то и применяю...
"There's more than one way to do it!"

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 02.12.2003 (Вт) 14:33

А теперь вдруг оно стало работать, но если под запрос подходит больше, чем одна строка из таблицы, то выдаёт следующее
Код: Выделить всё
Run-time error '3021':
No current record.

и не выдаёт ни одной записи.
"There's more than one way to do it!"

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 02.12.2003 (Вт) 15:32

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

Welcome to IRC

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 02.12.2003 (Вт) 15:47

Всё работает отлично. Вместо "=" поставил "like" и всё стало на свои места. Т.е. запрос теперь выглядит так:

Код: Выделить всё
stSQL = "SELECT * FROM [Post] Where [SearchName] like '" + strName +"*'"


Спасибо всем, кто проявил небезразличие к моим проблемам. :)
"There's more than one way to do it!"

Cellard
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 15.10.2002 (Вт) 22:10
Откуда: Russia

Сообщение Cellard » 02.12.2003 (Вт) 18:57

Немного не в тему, но вы об этом упоминали.
Названия таблиц и полей на Русском языке в Access очень даже приемлемы, НО:
во избежание ошибок их надо [обрамлять].
У меня была такая ошибка:
В проект была добавлена таблица в названии которой была буква "ч". На одной машине все работало, на другой ошибка. Спасли [квадратные_скобки]

:)
Cellard

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 03.12.2003 (Ср) 11:11

2Cellard:
я тоже так раньше думал, но пока я не сменил имена всех колонок в таблице на латинские, ничего не работало... :(
"There's more than one way to do it!"

Cellard
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 15.10.2002 (Вт) 22:10
Откуда: Russia

Сообщение Cellard » 04.12.2003 (Чт) 16:52

Интересно... А если ["Таблица"] еще и кавычки?
Cellard

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 05.12.2003 (Пт) 10:06

Честно говоря, я уже и не помню, т.к. всё давно уже работает... Но пробовал я много вариантов...
"There's more than one way to do it!"


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 51

    TopList