Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблемы с INSERT :( [D5, Paradox, ]


Страницы:   1 2

Olfi ©   (2002-01-10 11:05:00) 

Нужно вставить несколько столбцев из одной таблицы в другую (пустую)... Вставляет, но пишет об ошибке!

insert into "01.01.02.db"
(Product)
select product from "08.01.02.db"

Ну где тут может быть ошибка!?


Olfi   (2002-01-11 14:16:00) [1]

YYYYYEEEEEESSSSSSSS!!!!!!!!!!!!!!!!!!!

Проблема решена следующим кодом:

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("insert into "01.01.02.db"");
Query1.SQL.Add(" (Product, pkol1,pkol2,pkol3,ost1)");
Query1.SQL.Add(" select Product, pkol1,pkol2,pkol3,ost1 from "08.01.02.db" ");
Query1.ExecSQL;
Query1.sql.clear;
Query1.SQL.Add("Select * From "01.01.02.db" as normal ; ");
Query1.open;

Ошибка заключалась в том, что я писал sql код в TUpdateSql , а не в TQuery!
Искренне благодарю, всех, кто мне помог решить эту проблему :):):)


roottim   (2002-01-11 14:15:00) [2]

начнем с того... хелп начто сделан?
если по UpdateQuery то проседура выглядит так
procedure ExecSQL(UpdateKind: TUpdateKind);
ukDelete
ukInsert
ukModify

это одно!...
второе.. что значит одна таблица...
если ты перекачиваеш данные.. то их должно быть 2...
INSERT не создает новую таблицу!... только записи вставляет...
для создания новой пользуются CREATE TABLE

далее если ты делаеш гетородинные запросы...(касательно 2 БД)
что позволяет делать БДЕ то там надо писать ":lias_DB:TableName"
а если ты используеш 2 таблицы в одной БД... ничего этого не надо!


Alexandr   (2002-01-11 14:13:00) [3]

query1.close;
sql1.InsertSQL.Clear;
sql1.insertsql.add ("insert into "01.01.02.db" (product, ost1,ost2) select product, ost1, ost2 from "08.01.02.db" ");
query1.ExecSQL;
query1.open;
это бред.

Update Failed говорит, что у тебя обновилось в таблице более одной строки, а ждали, что обновится одна и тебе сказали: чего-то не так.

тебе же kat сказала как надо...

Query.Close;
Query.SQL.Clear;
Query.SQL.Add("insert into "01.01.02.db"");
Query.SQL.Add(" (Product)");
Query.SQL.Add(" select product from "08.01.02.db" ");
Query.ExecSQL;

и все работать будет!
Если ты чего-то не понимаешь, то прислушивайся чему тебя учат и не удивляйся. И не спорь



Olfi   (2002-01-11 14:01:00) [4]

roottim:
В одной БД одна таблица. Тренеруюсь прямо на ней.
Насколько я знаю, вставить можно либо одну строку , если писать Values, либо много строк, - через Select.

Alexandr: в смысле? какой программой? Я на Делфи прогу пишу, ты её имеешь ввиду?

kat: Что?????????? Так я этот же запрос вставлял в TUpdateSQL!!!
его что, в сам TQuery писать надо?

И ошибка возникает после UpdateSql1.ExecSQL(ukInsert);
Кажется - "Update Failed" .

Только что писал:
query1.close;
sql1.InsertSQL.Clear;
sql1.insertsql.add ("insert into "01.01.02.db" (product, ost1,ost2) select product, ost1, ost2 from "08.01.02.db" ");
query1.ExecSQL;
query1.open;

(SQL1 : TUpdateSql)
Ошибок никаких не было!!! Только оно ничего не вставляет! :(
Не понятно, что оно вообще таким образом делает :)


roottim   (2002-01-11 13:09:00) [5]

>Alexandr
>Посмотри начало. У него вставляет!

если вставляет.. то причем тут вообще SQL

чего за ошибка?...


kat   (2002-01-11 12:46:00) [6]

Query.Close;
Query.SQL.Clear;
Query.SQL.Add("insert into "01.01.02.db"");
Query.SQL.Add(" (Product)");
Query.SQL.Add(" select product from "08.01.02.db" ");
Query.ExecSQL;
И все.


Alexandr   (2002-01-11 12:45:00) [7]

roottim:
Посмотри начало. У него вставляет!

кстати какой программой Olfi пользуется?


roottim   (2002-01-11 12:44:00) [8]

:)) не успел тормознуть :))


roottim   (2002-01-11 12:43:00) [9]

у БД нет полей!!!
поля у таблиц!...

1. эти 2 таблицы в разных БД или в одной?
2. тренеруешся на таблице состоящим из одного поля?
3. если не 2. то напиши хоть ключевые и нот нул поля!... без
них невозможно вставить запись....
поняти вставки колонки нет!!...


roottim   (2002-01-11 12:42:00) [10]

у БД не полей!!!
поля у таблиц!...

1. эти 2 таблицы в разных БД или в одной?
2. тренеруешся на таблице состоящим из одного поля?
3. если не 2. то напиши хоть ключевые и нот нул поля!... без
них невозможно вставить запись....
поняти вставки колонки нет!!...


Alexandr   (2002-01-11 12:39:00) [11]

у тебя же копируется...
Но выскакивает ошибка видимо типа "не могу открыть датасет" или
"не могу создать курсор".
ты как запрос запускаешь по Open? Да? И чего ты отрыть собираешься?

Тебе надо ExecSQL запускать


Olfi   (2002-01-11 12:32:00) [12]

rootim: Я выше писал, какие поля... в обеих БД. Они одинаковые.


Olfi   (2002-01-11 12:29:00) [13]

Стуктура ? :) В каждой БД больше 100 полей... Из них 30 нужно копировать в Бд за следующий день. На примере пытаюсь разобраться, как скопировать хотя бы одно поле записей.

Всё гениально и просто? Согласен... Но как это сделать? Здесь же нет ничего сверхестественного. Просто столбец из одной БД скопировать в другую!


Alexandr   (2002-01-11 12:10:00) [14]

2kat :
По - моему это как-раз его случай!
Все гениальное просто!


kat   (2002-01-11 11:59:00) [15]

Раз вставляет и пишет об ошибке, то может быть надо написать Query.ExecSQL, а не Query.Open


roottim   (2002-01-11 11:05:00) [16]

всех запутал!
Бд это не таблица
опиши конкретнее...
типа есть 2 экземпляра БД
в БД..(алиас ее) табл TableName1... структурку....
в др БД табл TableName2... структурку....
а потом можно и про селект подумать
:))))


Oracle   (2002-01-11 10:47:00) [17]

Поменять все микросхемы надо


Olfi   (2002-01-11 10:45:00) [18]

Объясню ситуацию...
Есть две БД. У них одинаковая структура, то есть поля. Нужно вставить из одной столбец с записями в другую.
Только что пробовал так:

insert into ":product:01.01.02.db" select product from "08.01.02.db"

Так тоже не хочет... Ошибок показывает ещё больше... Что делать?


koks   (2002-01-10 12:49:00) [19]

Надо определиться: вставить столбец или добавить записи...
Если добавить записи:
INSERT INTO ":alias_name:01.01.02.db"
SELECT product FROM "08.01.02.db"

При этом будут добавляться новые записи в табл. 01.01.02, в которых будет заполняться поле product (оно естейственно должно быть)... А нет ли у тебя в 01.01.02 обязательных полей, отличных от product .....


Alexandr   (2002-01-10 12:24:00) [20]

какая ощибка-то?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо