Всем добрый день. У меня возникла довольно неприятная проблема. Суть вот в чем. Делаю трехзвеньевую базу (MySQL + Delphi 7 + COM). Структура базы представлена на рисунке. Связь с сервером через DCOMConnection и ClientDataSet. Связь с базой через ADOConnection. Добавление темы и разделов происходит без проблем. А вот при добавлении статьи (Blob поле) вылетает ошибка - "Exctption class EDBClient with message 'Key violation'. И указывается на строку "
if DM.CDSSTAT.ApplyUpdates(-1)=0 then
DM.CDSSTAT.Refresh;"
Но дело в том что никакой ошибки ключа быть не может, тк все данные указываются правильно. И еще интересно то, что несколько раз файл добавился без проблем, но чем это было вызвано не пойму, и это произошло всего пару раз, хотя я в коде ничего не менял. Поэтому, не зная в чем проблема, прошу Вашей помощи......
Код:
procedure TForm3.FormShow(Sender: TObject);
begin
DM.CDSSTAT.Insert;
DBLookupComboBox1.ListSource:=DM.DStema;
DBLookupComboBox1.ListField:='Naz_tema';
DBLookupComboBox1.KeyField:='Naz_tema';
end;
procedure TForm3.DBLookupComboBox1CloseUp(Sender: TObject);
var
i:variant;
begin
i:=DBText1.Caption;
DM.CDS1.Close;
DM.CDS1.CommandText:='select * from razdel where tema_num_tema ='+i;
DM.CDS1.Open;
DBLookupComboBox2.DataSource:=DM.DSstat;
DBLookupComboBox2.DataField:='naz_razdel';
DBLookupComboBox2.ListSource:=DataSource2;
DBLookupComboBox2.ListField:='Naz_razdel';
DBLookupComboBox2.KeyField:='Naz_razdel';
end;
procedure TForm3.Button3Click(Sender: TObject);
var
s:TStream;
n:TFileName;
begin
if OpenDialog1.Execute then
begin
n:=OpenDialog1.FileName;
S:=TFileStream.Create(n,fmOpenRead);
DM.CDSSTATTEXT_STAT.LoadFromStream(S);
end;
S.Free;
end;
procedure TForm3.DBLookupComboBox2CloseUp(Sender: TObject);
var
i:string;
begin
DBText2.DataField:='num_razdel';
i:=DBText2.Caption;
DM.CDSSTAT.FieldByName('razdel_num_razdel').AsString:=i;
end;
procedure TForm3.DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
begin
if DM.CDSSTAT.ApplyUpdates(-1)=0 then -------------------------------- Вот тут указывает на ошибку
DM.CDSSTAT.Refresh;
end;
Admin: Пользуемся тегами!
Подскажите пожалуйста что делать?