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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2008, 13:35   #11
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

снова запрос и снова не робит блин

Query1.SQL.Text:='INSERT INTO wremtabl SELECT * FROM Vopros WHERE Glava =('+QuotedStr(gl)+') AND Nvopr =('+QuotedStr(nv)+')';
Query1.ExecSQL;
uraura вне форума Ответить с цитированием
Старый 02.11.2008, 15:17   #12
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Какой формат имеет команда INSERT ?
Правильно - перечень полей + перечень значений для них (см. первый запрос).
А тут что???
Вывод - берем любую книгу по SQL и используем как справочник...
SQL - язык строгий, отсебятину не принимает.
Цитата:
извините, коллега. Но не это не совсем так
Да, да, каюсь, совсем забыл... Очень давно эту конструкцию опробовал, но так и не применял - не было нужды...

Последний раз редактировалось mihali4; 02.11.2008 в 15:57.
mihali4 вне форума Ответить с цитированием
Старый 02.11.2008, 15:26   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от mihali4
Какой формат имеет команда INSERT ?
Правильно - перечень полей + перечень значений для них
извините, коллега. Но не это не совсем так.
вот, чтобы не повторяться - ссылка на дисскусию, посвященную этому вопросу, которая была здесь, на форуме - сохранение результата запроса в таблицу БД
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.11.2008, 15:48   #14
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

я читаю книги уже голова болит за две недели с ничего сделай прогу в делфи (который тока увидел) вот и парюсь, ну ладно не об этом
вот пример из книги:

INSERT ... SELECT
- Такой синтаксис позволяет внести в таблицу большое количество записей за один раз, причем из разных таблиц.
Следующий пример запишет в таблицу users_new все записи из таблицы users, в которых поле country равно "Russia".
INSERT INTO `users_new` SELECT * FROM `users` WHERE `country` = 'Russia'
Если для таблицы, в которую происходит вставка записей, не указан список полей, то значения для всех полей будут определены на основании результата работы SELECT.

мне и надо в таблицу wremtabl из таблицы Vopros записать строки в которых поля Glava и Nvopr нужных мне значений
uraura вне форума Ответить с цитированием
Старый 02.11.2008, 17:24   #15
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

запрос оказался правильным просто в таблицах разные типы полей были
uraura вне форума Ответить с цитированием
Старый 02.11.2008, 19:10   #16
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

вот еще наворотил!
сейчас запрос работает но выдает на каждую запись из таблицы Vopros всю таблицу WarOt а надо из той и другой строчку где Glava=Х и Nvopr=Х
таблицы Vopros, WarOt в них есть идентичные поля Glava и Nvopr

INSERT INTO wremtabl (Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9 ) SELECT Vopros.Glava, Vopros.Nvopr, Voprosi, Otvet, Var1, Var2, Var3, Var4, Var5 FROM Vopros, WarOt WHERE Glava =('+QuotedStr(gl)+') AND Nvopr =('+QuotedStr(nv)+'

Последний раз редактировалось uraura; 02.11.2008 в 19:19.
uraura вне форума Ответить с цитированием
Старый 03.11.2008, 01:07   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, запомните, если Вы указываете во FROM несколько таблиц, значит должны указать как они друг с другом связаны!

Код:
INSERT INTO wremtabl (Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9 ) 
SELECT Vopros.Glava, Vopros.Nvopr, 
            Voprosi, Otvet, Var1, Var2, Var3, Var4, Var5 
  FROM Vopros, WarOt 
  WHERE Vopros.Glava = ('+QuotedStr(gl)+') 
   AND Vopros.Nvopr =('+QuotedStr(nv)+')'
   AND Vopros.Glava = WarOt.Glava 
   AND Vopros.Nvopr = WarOt.Nvopr
где-то так....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.11.2008, 12:36   #18
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

отлично! я почти так же пробовал но

INSERT INTO wremtabl (Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9 )
SELECT Vopros.Glava, Vopros.Nvopr,
Voprosi, Otvet, Var1, Var2, Var3, Var4, Var5
FROM Vopros, WarOt
WHERE Vopros.Glava = ('+QuotedStr(gl)+')
AND Vopros.Nvopr =('+QuotedStr(nv)+')
AND WarOt.Glava = ('+QuotedStr(gl)+')
AND WarOt.Nvopr = ('+QuotedStr(nv)+')
uraura вне форума Ответить с цитированием
Старый 07.11.2008, 20:58   #19
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

У меня снова вопрос
мне надо чтобы моя программа создавала таблицу (БД тип PARADOX7) не в папке с экзешником а в отдельной папке Protokol при помощи SQL запроса
Query1.Close;
Query1.SQL.Clear;
Query1.sql.Text:='CREATE TABLE '+QuotedStr(TabNom)+' (glava CHAR(2), nvopr CHAR(2))';
Query1.ExecSQL;
uraura вне форума Ответить с цитированием
Старый 07.11.2008, 20:59   #20
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

может вот это куда то вставить надо?
path:=ExtractFilePath(ParamStr(0))+ 'Protokol\';
uraura вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему не работает domovoi Общие вопросы Delphi 1 15.10.2008 18:42
почему не находит??? vipER Общие вопросы C/C++ 1 26.09.2007 14:26
Почему? Sota О форуме и сайтах клуба 4 26.07.2007 16:26
Почему так? Сильванович Михаил Общие вопросы C/C++ 2 03.07.2007 11:57