Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];

Вниз

Проблемы с INSERT :(   Найти похожие ветки 

 
Olfi   (2002-01-10 11:05) [0]

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

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

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


 
roottim   (2002-01-10 11:16) [1]

а так!!

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


 
Olfi   (2002-01-10 12:08) [2]

Так тоже...


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

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


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

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

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


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

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

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

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


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

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


 
roottim   (2002-01-11 11:05) [7]

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


 
kat   (2002-01-11 11:59) [8]

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


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

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


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

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

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


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

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


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

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

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


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

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

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


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

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

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


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

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


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

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

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


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

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;
И все.


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

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

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

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


 
Olfi   (2002-01-11 14:01) [19]

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)
Ошибок никаких не было!!! Только оно ничего не вставляет! :(
Не понятно, что оно вообще таким образом делает :)


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

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;

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




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

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

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

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


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

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!
Искренне благодарю, всех, кто мне помог решить эту проблему :):):)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.005 c
7-18992
Nikolay
2001-10-29 08:56
2002.02.07
Дедушкины часы!


3-18704
dim-
2002-01-09 12:35
2002.02.07
FreeReport


3-18733
ADy
2002-01-10 22:01
2002.02.07
SQL, Interbase


14-18949
Tosov
2001-12-16 20:39
2002.02.07
Вопрос дня !!!


1-18837
Rulev
2002-01-21 16:26
2002.02.07
MDI - Дочерние окна





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский