Имя:  Пароль:  Запомнить меня  
 Delphi 7+ADO+Dbase     

       Глагне форума Список форумов Валдай Разное

Автор Сообщение

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 и в качестве параметра указать поле или какое значение выбираем , то все проходит без ошибок.

Как жить дальше? Rolling Eyes


Илья 3787
Коллежский советник



Профиль
Сообщение


Сообщение 20.01.06 00:52 Ответить с цитатой

Кажись неверно указанно имя таблицы.


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


Как то пробовал вот так

Код:
+ :TableName +


Тогда вообще жесть начинаеться Confused

Кстати , если попробовать через BDE , то никаких ошибок нет Rolling Eyes


MaZaY 719
Губернский секретарь



Профиль
Сообщение


Сообщение 20.01.06 02:13 Ответить с цитатой

Искал в рускоязычном и буржуйском
Результатов почти ноль.
на http://www.msdn.microsoft.com/ тоже глухо.

Посмотрю что ответят в "Королевстве".


Илья 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




Профиль
Сообщение


Сообщение 20.01.06 14:14 Ответить с цитатой

Ya ba ispolsoval MySQL, samai bustroi, y nadushnoi.


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.


Laughing Laughing Laughing эта пять! дайте две!


MaZaY 719
Губернский секретарь



Профиль
Сообщение


Сообщение 23.01.06 13:47 Ответить с цитатой

Psychodelic писал(а):
MaZaY писал(а):

Угу конечно, самый быстрый и надежный ---
А я бы использовал и использую MS SQL 2000.


Laughing Laughing Laughing эта пять! дайте две!


Чо те две?

Монеты?

Нету Confused

Показать сообщения:   
       Глагне форума Список форумов Валдай Разное
Страница 1 из 1

 
Перейти:  

   наверх | последнее на форуме

Поделиться
Класснуть


Сайт города Валдай
Сайт города Валдай

Помогите мне

Волшебный поиск

Пользователи

Вход


Актуальное:

 Описания наших путешествий

 Приблуда для мастерской.

 Качелька.

 Вакансии в ПНИ "Добывалово"

 Хойти-Тойти jr.

 Посмотрел фильм...

 Весёлые картинки

 Клуб любителей чтения

 МЕГА-АНЕКДОТ

 Скорбное








  Рейтинг@Mail.ru

Информация о сайте |  Символика |  Приложения |  Архивы |  Гостевая книга |  Мобильная версия
«Группа товарищей™» © 2000-2039 
E-mail редакции сайта: valday.com@gmail.com, редакции газеты «Валдай»: gazeta@valday.com