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

Вниз

Ошибка при перекачке данных   Найти похожие ветки 

 
Mike2 Kouzmine2   (2003-08-13 14:34) [0]

Имеется таблица
/********************************************************************* *********/
/*** Tables ***/
/********************************************************************* *********/

CREATE TABLE REPPART (
SCLAD ID,
GRUP ID,
NNUM ARTIKUL NOT NULL COLLATE PXW_CYRL,
NEW_NNUM ARTIKUL NOT NULL COLLATE PXW_CYRL,
NAME NAME,
CNT NUMBER
);

/********************************************************************* *********/
/*** Primary Keys ***/
/********************************************************************* *********/

ALTER TABLE REPPART ADD CONSTRAINT PK_REPPART PRIMARY KEY (SCLAD, GRUP, NNUM, NEW_NNUM);

/********************************************************************* *********/
/*** Foreign Keys ***/
/********************************************************************* *********/

ALTER TABLE REPPART ADD CONSTRAINT FK_REPPART FOREIGN KEY (GRUP, SCLAD) REFERENCES GRUPS (ID, SCLAD) ON UPDATE CASCADE;

Вставка происходит так

while not rp.Eof do
begin
gr.FindKey([rpSCLAD.Value,rpGROUP.Value]);
try
if IBTransaction1.InTransaction then IBTransaction1.Rollback;
IBTransaction1.StartTransaction;
IBDataSet1.Open;
IBStoredProc1.Params[0].Clear;
IBStoredProc1.Params[1].AsInteger := rpSCLAD.AsInteger;
IBStoredProc1.Params[2].AsString := grNAME.Value;
IBStoredProc1.ExecProc;
IBDataSet1.AppendRecord([rpSCLAD.AsInteger,IBStoredProc1.Params[0].AsI nteger,
rpPartNo.Value,rpNewPartNo.Value,rpNewDescrip.Value,rpNewQuantit.Value ]);
{IBDataSet1SCLAD.Value := rpSCLAD.AsInteger;
IBDataSet1GRUP.Value := IBStoredProc1.Params[0].AsInteger;
IBDataSet1NNUM.Value := rpPartNo.Value;
IBDataSet1NEW_NNUM.Value := rpNewPartNo.Value;
IBDataSet1NAME.Value := rpNewDescrip.Value;
IBDataSet1CNT.Value := rpNewQuantit.Value;
IBDataSet1.Post;}
if IBTransaction1.InTransaction then IBTransaction1.Commit;
rp.Next;
ProgressBar1.Position := rp.RecNo;
Application.ProcessMessages;
except
on E:Exception do
begin
if IBTransaction1.InTransaction then IBTransaction1.Rollback;
memo1.Lines.Add(rpPartNo.Value + " " + rpNewPartNo.Value);
Memo1.Lines.Add(E.Message);
rp.Next;
ProgressBar1.Position := rp.RecNo;
Application.ProcessMessages;
end;
end;
end;

Ошибка - нарушение целостности первичного ключа.
Что приводит к ней: вставка записи где значения полей NNUM и NEW_NNUM разные (они везде разные), но, в итоге, записи вставляются с одинаковыми значениями в вышеназванных полях, но таких нет в источнике.


 
Reindeer Moss Eater   (2003-08-13 15:03) [1]

gr.FindKey([rpSCLAD.Value,rpGROUP.Value]);

А где проверка, что FindKey был успешен?


 
Reindeer Moss Eater   (2003-08-13 15:05) [2]

If the search is successful, FindKey positions the cursor on the matching record and returns True. Otherwise the cursor is not moved, and FindKey returns False.


 
Mike2 Kouzmine2   (2003-08-13 15:10) [3]

Все находит нормально - проверено в отладке и убрано за ненадобностью. Там присутствует только одно сочетание.


 
Reindeer Moss Eater   (2003-08-13 15:12) [4]

Mike2 Kouzmine2
Ты веришь в чудеса?


 
Reindeer Moss Eater   (2003-08-13 15:13) [5]

проверено в отладке и убрано за ненадобностью
А данные тоже остались отладочные?


 
Mike2 Kouzmine2   (2003-08-13 15:27) [6]

Чтобы снять этот вопрос - подставлялись изначально верные значения в лоб, без поиска, но ошибка была.
Если бы верил в чудеса, то написал бы в потрепаться для кайфа.


 
Reindeer Moss Eater   (2003-08-13 15:29) [7]

Ну так вот, что бы не трепаться, вставь в свой цикл перед каждым инсертом сообщение с результатом FindKey.


 
Е-Моё имя   (2003-08-13 15:31) [8]

Mike2 Kouzmine2 (13.08.03 15:27)
для кайфа.

для kaif"а? ;-))))
у него там приступ паранойи, не надо ему твоих вопросов)))))


 
Mike2 Kouzmine2   (2003-08-13 15:41) [9]

Хорошо, подождем тм.


 
Mike2 Kouzmine2   (2003-08-13 15:49) [10]

Заменил
IBDataSet1.Insert;
IBDataSet1SCLAD.Value := 1;
IBDataSet1GRUP.Value := 1;

IBDataSet1NNUM.Value := rpPartNo.Value;
IBDataSet1NEW_NNUM.Value := rpNewPartNo.Value;
IBDataSet1NAME.Value := rpNewDescrip.Value;
IBDataSet1CNT.Value := rpNewQuantit.Value;
IBDataSet1.Post;

И убрал Find и вызов ХП.
Ошибка таже.
Убрал из первичного ключа NEW_NNUM (вдруг у FB левые ассоциации с NEW), не помогло.


 
Mike2 Kouzmine2   (2003-08-13 15:50) [11]

Убрал внешний ключ - ошибка та же.


 
Reindeer Moss Eater   (2003-08-13 15:52) [12]

Убери весь код совсем.
Гарантирую - ошибка исчезнет.


 
Mike2 Kouzmine2   (2003-08-13 16:08) [13]

Клоунов полно.. (Сам такой)


 
Johnmen   (2003-08-13 16:11) [14]

Осталось определиться с

IBDataSet1NNUM.Value := ??? //rpPartNo.Value;
IBDataSet1NEW_NNUM.Value := ??? //rpNewPartNo.Value;


 
Mike2 Kouzmine2   (2003-08-13 16:15) [15]

Нет. Ошибка ушла когда поле NEW_NNUM переименовал в NNUM1. Видимо в IB комп. или ФБ действительно с NEW ассоциации.



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

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

Наверх





Память: 0.48 MB
Время: 0.009 c
1-10755
Массиватор
2003-08-25 06:23
2003.09.04
Image Editor


7-10994
Igorexa
2003-06-11 16:30
2003.09.04
создание редакторов, плееров и т.д.


7-11004
Fants
2003-06-19 17:12
2003.09.04
Свое расширение файла в системе


3-10653
AGAMEMNUM
2003-08-12 12:39
2003.09.04
Две транзакции


14-10903
Tornado
2003-08-18 13:02
2003.09.04
Отечественное автомобилестроение - письмо иностранца





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский