Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не удается обновить БД 
:(
    Опции темы
staziah2
Дата 5.5.2015, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 24.3.2015

Репутация: нет
Всего: нет



Добрый день! Который день ломаю голову,но так и ничего понять не могу. Все время ругается при введении данных,но не обновляется почему.
Вот код:
Код

unit Vvod;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, Grids, DBGrids, wwdblook, ExtCtrls, ComCtrls,
  Wwdbigrd, Wwdbgrid, wwdbdatetimepicker, Mask, wwdbedit, Wwdotdot,
  Wwdbcomb, Wwkeycb, DBCtrls, ComObj, ShellApi;
 
type
  TForm2 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Label7: TLabel;
    tipi: TwwDBLookupCombo;
    Label1: TLabel;
    cex: TwwDBLookupCombo;
    Label9: TLabel;
    data: TwwDBDateTimePicker;
    Label10: TLabel;
    Label11: TLabel;
    Edit2: TEdit;
    Label12: TLabel;
    wwDBComboDlg1: TwwDBComboDlg;
    Button4: TButton;
    Button5: TButton;
    wwDBGrid2: TwwDBGrid;
    wwDBLookupCombo1: TwwDBLookupCombo;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure wwDBComboDlg1Enter(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);   
    procedure tipiChange(Sender: TObject);
    procedure dataChange(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
 
     
  private
    { Private declarations }
 
  public
    { Public declarations }
  end;
 
var
  Form2: TForm2;
 
implementation
         uses fr,xr,Unit5,Unit6,FmxUtils;
{$R *.dfm}
 
 
procedure TForm2.Button1Click(Sender: TObject);
var Path1, Path2 , Path3: String;
begin
Path1 := Form2.wwDBComboDlg1.Text;
Path2 := '\\Fs\наряды;\'+cex.Text+'\'+data.Text+'\'+cex.Text+'_'+wwDBLookupCombo1.Text+'_'+Edit2.Text+'.tif';
Path3 := '\\Fs\наряды;\'+cex.Text+'\'+data.Text;
if FileExists(Path3)=false then
begin
  if ForceDirectories(Path3) then
  CopyFile(Path1,Path2);
end;
 
 
if varisnull(dm.ceh.Lookup('ceh',cex.Text,'ceh'))=true then  
begin
      dm.Query.SQL.Clear;         
      dm.Query.SQL.Text:= 'Insert into ceh (ceh) Values ('''+cex.Text+''')';     
      dm.Query.ExecSQL;
      dm.ceh.Requery();
 
end   ;
 
 
if varisnull(dm.zakaz.Lookup('N_zakaz',wwDBLookupCombo1.Text,'N_zakaz'))=true then
begin
      dm.Query.SQL.Clear;         
      dm.Query.SQL.Text:= 'Insert into N_zakaza (N_zakaz) Values ('''+wwDBLookupCombo1.Text+''')';     
      dm.Query.ExecSQL;
     dm.zakaz.Requery();
 
end   ;
 
 
dm.Query.SQL.Clear;         
dm.Query.SQL.Text:= 'Insert into naryadi (ceh,data,N_zakaz,N_naryad,Tip_dok,path ) Values ('''+cex.Text+''','''+data.Text+''','''+wwDBLookupCombo1.Text+''','''+Edit2.Text+''','''+tipi.Text+''','''+Path2+''')';     
dm.Query.ExecSQL;        
 
dm.Main.SQL.Clear;
dm.Main.SQL.Text:= 'select * from [naryadi]';
dm.Main.Open;     
refresh;
 
dm.Main.Last;    
end;
 
 
procedure TForm2.Button2Click(Sender: TObject);
begin
if MessageDlg('Вы точно хотите удалить запись?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    dm.Main.Delete;
end;
 
procedure TForm2.wwDBComboDlg1Enter(Sender: TObject);
begin
    if OpenDialog1.Execute then
  begin
   if not (dm.Main.State in [dsInsert,dsEdit]) then
   //dm.Main.Edit;
  Form2.wwDBComboDlg1.Text:= OpenDialog1.FileName;
 // dm.Main.Post;
    
end;
end;
 
procedure TForm2.Button3Click(Sender: TObject);
begin
      Application.CreateForm(TForm5, Form5);
      Form5.ShowModal;
end;
 
procedure TForm2.Button6Click(Sender: TObject);
begin
      Application.CreateForm(TForm6, Form6);
      Form6.ShowModal;
end;
 
procedure TForm2.Button7Click(Sender: TObject);
var Path1, Path2 , Path3: String;
begin
Path1 := Form2.wwDBComboDlg1.Text;
Path2 := '\\Fs\наряды\'+cex.Text+'\'+data.Text+'\'+cex.Text+'_'+wwDBLookupCombo1.Text+'_'+Edit2.Text+'.tif';
Path3 := '\\Fs\наряды\'+cex.Text+'\'+data.Text;
if FileExists(Path3)=false then
begin
  if ForceDirectories(Path3) then
  CopyFile(Path1,Path2);
end;
end;
procedure TForm2.Button8Click(Sender: TObject);
begin
ShellExecute(Handle,nil,PChar(dm.Mainpath.AsString) ,nil,nil,SW_RESTORE);
end;
 
 
procedure TForm2.tipiChange(Sender: TObject);
begin
  cex.Text:= '';
end;
 
procedure TForm2.dataChange(Sender: TObject);
begin
 Edit2.Text := '';
end;
 
procedure TForm2.Edit2Change(Sender: TObject);
begin
  wwDBComboDlg1.Text := '';
end;
end.


Вот ошибка: Violation of Primary Key constraint 'PK_N_zakaza'. Cannot insert dublicate key in object 'N_zakaza'.

Что не так я сделала? БД: MSSQL; Delphi 7


PM MAIL ICQ   Вверх
ТоляМБА
Дата 5.5.2015, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



В таблицу N_Zakaza вставляете в уникальное поле неуникальное значение.
Например есть таблица Т, в ней поле F. Поле F позволяет в себя добавлять только уникальные значения и в нём есть уже значение "123", это значит что если вы ещё раз попытаетесь в него записать значение "123" вам будет выдана вышеуказанная вами ошибка.
PM   Вверх
staziah2
Дата 5.5.2015, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 24.3.2015

Репутация: нет
Всего: нет



Цитата(ТоляМБА @ 5.5.2015,  08:05)
В таблицу N_Zakaza вставляете в уникальное поле неуникальное значение.
Например есть таблица Т, в ней поле F. Поле F позволяет в себя добавлять только уникальные значения и в нём есть уже значение "123", это значит что если вы ещё раз попытаетесь в него записать значение "123" вам будет выдана вышеуказанная вами ошибка.

но я же не буду закрывать  и открывать программу,чтоб снова что-то добавлять.
PM MAIL ICQ   Вверх
ТоляМБА
Дата 5.5.2015, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



staziah2, а что, когда вы закрываете программу БД чистится? Если нет, то хоть зазакрывайтесь, вам не даст БД внести повторяющееся значение в уникальное поле.

Перед этим
Код

      dm.Query.SQL.Clear;         
      dm.Query.SQL.Text:= 'Insert into N_zakaza (N_zakaz) Values ('''+wwDBLookupCombo1.Text+''')';     
      dm.Query.ExecSQL;
     dm.zakaz.Requery();

нужно сделать запрос селект на наличие значения N_zakaz в таблице N_zakaza и только если нет такого значения то добавлять его.

Это сообщение отредактировал(а) ТоляМБА - 5.5.2015, 09:05
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0631 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.