Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2009, 01:20   #1
Artruman
Пользователь
 
Аватар для Artruman
 
Регистрация: 14.10.2008
Сообщений: 28
По умолчанию Запрос

Надо создать новую пустую таблицу c именем из RzEdit1.Text,скопировать в нее Test Table и очистить.

Цитата:
ошибка синтаксиса в предложении From


Код:
 if RzEdit1.Text<>'' then
  begin
   adoquery1.Close;
   adoquery1.SQL.Clear;
   with adoquery1.sql do
    begin
     add('CREATE TABLE '+RzEdit1.text+';');
    end;
     adoQuery1.ExecSQL;
     adoquery1.Close;
     adoquery1.SQL.Clear;
      with adoquery1.sql do
       begin
        add('SELECT* INTO '+RzEdit1.text+ ' FROM TestTable ; ');
       end;
        adoQuery1.ExecSQL;
        adoquery1.Close;
        adoquery1.SQL.Clear;
        adoquery1.SQL.add ('DELETE From '+RzEdit1.Text+'; ');
        adoQuery1.ExecSQL;
       end;
Artruman вне форума Ответить с цитированием
Старый 04.05.2009, 08:25   #2
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию

Код:
  add('CREATE TABLE '+RzEdit1.text+';');
Во-первых сомневаюсь, что можно добавлять данные в таблицу,где не созданы поля..
Цитата:
add('SELECT* INTO '+RzEdit1.text+ ' FROM TestTable ; ');
Во-вторых, сомневаюсь,что этот код правильный и так вобще можно писать..
Возможно:
Код:
add(' INSERT INTO '+RzEdit1.text+ ' (FIELD1, FIELD2...)
 SELECT FIELD1,FIELD2... FROM TestTable ; ')
Никому не поставить нас на колени! Мы лежали и будем лежать!
Rekky вне форума Ответить с цитированием
Старый 04.05.2009, 14:06   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Rekky, Вы не правы!

Дело в том, что данный оператор (создание таблицы по результатам запроса) ОЧЕНЬ зависит от используемой СУБД!
навскидку:
Oracle:
Код:
CREATE TABLE MyAnotherTable AS SELECT * FROM TESTTABLE;
MS SQL (и старый добрый MS Access):
Код:
SELECT * INTO MyAnotherTable FROM TestTable;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.05.2009, 14:09   #4
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию

Спасибо) Предпологала, конечно, но все таки склонилась к своему варианту) Извините за неправильную наводку))))
Никому не поставить нас на колени! Мы лежали и будем лежать!
Rekky вне форума Ответить с цитированием
Старый 04.05.2009, 15:45   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Предполагала, конечно, но все таки склонилась к своему варианту) Извините за неправильную наводку))))
А знаете что самое смешное? Вы почти правы...
вот здесь:
Код:
     add('CREATE TABLE '+RzEdit1.text+';');
     adoQuery1.ExecSQL;
насколько мне известно, ни одна СУБД не позволит создать таблицу БЕЗ полей!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.05.2009, 00:11   #6
Artruman
Пользователь
 
Аватар для Artruman
 
Регистрация: 14.10.2008
Сообщений: 28
По умолчанию

Спасибо за полезную инфу.Но меня все-таки смущает "синтаксическая ошибка в предложении FROM"...Вопрос.Правильна ли в принципе следующая строка? Надо считать имя таблицы из RzEdit.Text.

Код:
     add('SELECT* INTO '+RzEdit1.text+ ' FROM TestTable ; ');
Artruman вне форума Ответить с цитированием
Старый 05.05.2009, 08:19   #7
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию

Ну так мы и говорим, что ,возможно, эта ошибка из-за того, что не созданы поля у тублицы с именем RZedit.text. Ты ведь только использовал команду CREATE и задал имя таблицы, а поля не указал, какие там должны быть!
Никому не поставить нас на колени! Мы лежали и будем лежать!
Rekky вне форума Ответить с цитированием
Старый 05.05.2009, 08:30   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А мне кажется, что выделенное двоеточие лишнее. Или нет?
Код:
add('SELECT* INTO '+RzEdit1.text+ ' FROM TestTable ; ');
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 05.05.2009, 09:06   #9
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию

Ну я очень удивлюсь, если это будет так) Вроде она не мешает...хотя и без нее можно обойтись!
Никому не поставить нас на колени! Мы лежали и будем лежать!
Rekky вне форума Ответить с цитированием
Старый 05.05.2009, 18:10   #10
Artruman
Пользователь
 
Аватар для Artruman
 
Регистрация: 14.10.2008
Сообщений: 28
По умолчанию

Даже не знаю что сказать...у меня вылетает одна и таже ошибка при совершенно разных операторах.

Допустим пишу:
Код:
add(format('CREATE TABLE %s (id smallint NOT NULL PRIMARY KEY,fio varchar(50)not null); ', [Rzedit1.text]));
Вылетает:
Цитата:
Ошибка синтаксиса в предложении From
Artruman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос Ruska882009 Помощь студентам 2 25.02.2009 03:02
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50
Запрос wolfik0 БД в Delphi 1 23.04.2008 21:55
Запрос Инночка БД в Delphi 2 23.04.2008 13:19