Автор |
Сообщение |
MaZaY 719 Губернский секретарь

Профиль Сообщение
|
19.01.06 23:53 |
Ответить с цитатой |
Господа , нужна помощь.
Доступ через ADO , база данных Dbase.
При попытке вставить значение в таблицу, где имя таблицы параметр, вылетает следующая ошибка:
"Параметр Pa_Ram000 задан вместо имени таблицы"
Код: |
ADOQuery1.Parameters.CreateParameter ('TableName', ftString, pdInput, 20, null);
ADOQuery1.Parameters.ParamByName('TableName').Value:=Edit1.Text;
ADOQuery1.SQL.Add ('Insert Into :TableName (S1) Values (100)');
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Clear;
|
Если же выполнить инструкцию Select и в качестве параметра указать поле или какое значение выбираем , то все проходит без ошибок.
Как жить дальше?  |
|
 |
Илья 3787 Коллежский советник

Профиль Сообщение
|
|
 |
MaZaY 719 Губернский секретарь

Профиль Сообщение
|
20.01.06 01:06 |
Ответить с цитатой |
Илья писал(а): |
Кажись неверно указанно имя таблицы. |
Тут-то как раз все верно , таблица есть, тем более драйвер базы данных бы ругнулся на отсутствие оной. |
|
 |
Илья 3787 Коллежский советник

Профиль Сообщение
|
20.01.06 01:32 |
Ответить с цитатой |
ADOQuery1.SQL.Add ('Insert Into :TableName (S1) Values (100)');
Это двоеточие - часть имени таблицы? |
|
 |
MaZaY 719 Губернский секретарь

Профиль Сообщение
|
20.01.06 01:37 |
Ответить с цитатой |
Илья писал(а): |
ADOQuery1.SQL.Add ('Insert Into :TableName (S1) Values (100)');
Это двоеточие - часть имени таблицы? |
Нет.
Так обозначается переменная в SQL запросе:
:ИмяПеременной |
|
 |
Илья 3787 Коллежский советник

Профиль Сообщение
|
20.01.06 02:02 |
Ответить с цитатой |
Попробуй что-то типа:
ADOQuery1.SQL.Add ('Insert Into' + TableName + '(S1) Values (100)'); |
|
 |
MaZaY 719 Губернский секретарь

Профиль Сообщение
|
20.01.06 02:08 |
Ответить с цитатой |
Илья писал(а): |
Попробуй что-то типа:
ADOQuery1.SQL.Add ('Insert Into' + TableName + '(S1) Values (100)'); |
Так нельзя
Цитата: |
Ошибка в инструкции Insert Into
|
Как то пробовал вот так
Тогда вообще жесть начинаеться
Кстати , если попробовать через BDE , то никаких ошибок нет  |
|
 |
MaZaY 719 Губернский секретарь

Профиль Сообщение
|
|
 |
Илья 3787 Коллежский советник

Профиль Сообщение
|
20.01.06 10:30 |
Ответить с цитатой |
MaZaY писал(а): |
Илья писал(а): |
Попробуй что-то типа:
ADOQuery1.SQL.Add ('Insert Into' + TableName + '(S1) Values (100)'); |
Так нельзя |
Почему нельзя?
Какую ошибку вызывает? |
|
 |
Azs 38838 Дорогая редакция

Профиль Сообщение
|
20.01.06 10:40 |
Ответить с цитатой |
А вроде Илья дело говорит.
С этими кавычечками-плюсиками-скобочками вообще одна морока в запросах. Я делал проще в бытность свою программистом — импортировал нужные таблицы в эксесс, и творил запрос егоным визуальным построителем, а потом смотрел его в режиме эскуэль и копипастировал в дельфийский проект. |
|
 |
Илья 3787 Коллежский советник

Профиль Сообщение
|
20.01.06 10:42 |
Ответить с цитатой |
Насколько я помню параметром с двоеточием можно задавать имя поля или значение поля, но не имя таблицы. Нужно разбить строку на:
ADOQuery1.SQL.Add ('Insert Into ' + TableName + ' (S1) Values (100)');
Где TableName - строковая переменная, хранящая имя таблицы. |
|
 |
MaZaY 719 Губернский секретарь

Профиль Сообщение
|
20.01.06 13:17 |
Ответить с цитатой |
Илья писал(а): |
MaZaY писал(а): |
Илья писал(а): |
Попробуй что-то типа:
ADOQuery1.SQL.Add ('Insert Into' + TableName + '(S1) Values (100)'); |
Так нельзя |
Почему нельзя?
Какую ошибку вызывает? |
Я же написал:
Цитата: |
Ошибка в инструкции Insert Into |
Это получиться не параметр а х. знает что. |
|
 |
MaZaY 719 Губернский секретарь

Профиль Сообщение
|
20.01.06 13:19 |
Ответить с цитатой |
Цитата: |
Насколько я помню параметром с двоеточием можно задавать имя поля или значение поля, но не имя таблицы. |
Сюда , наверно , копнуть надо глубже..... |
|
 |
MaZaY 719 Губернский секретарь

Профиль Сообщение
|
20.01.06 13:44 |
Ответить с цитатой |
Решение проблемы :
Код: |
ADOQuery1.SQL.Add(Format('Insert Into %s (S1) Values (100)', [Edit1.Text])); |
Всем спасибо. |
|
 |
blackraven36 52

Профиль Сообщение
|
|
 |
MaZaY 719 Губернский секретарь

Профиль Сообщение
|
20.01.06 21:00 |
Ответить с цитатой |
blackraven36 писал(а): |
Ya ba ispolsoval MySQL, samai bustroi, y nadushnoi. |
Угу конечно, самый быстрый и надежный :-S
А я бы использовал и использую MS SQL 2000. |
|
 |
Psychodelic 75

Профиль Сообщение
|
21.01.06 20:52 |
Ответить с цитатой |
MaZaY писал(а): |
Угу конечно, самый быстрый и надежный ---
А я бы использовал и использую MS SQL 2000. |
эта пять! дайте две! |
|
 |
MaZaY 719 Губернский секретарь

Профиль Сообщение
|
23.01.06 13:47 |
Ответить с цитатой |
Psychodelic писал(а): |
MaZaY писал(а): |
Угу конечно, самый быстрый и надежный ---
А я бы использовал и использую MS SQL 2000. |
эта пять! дайте две! |
Чо те две?
Монеты?
Нету  |
|
 |
|