Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2017, 13:05   #1
Дэдпул
Пользователь
 
Регистрация: 28.04.2016
Сообщений: 34
Сообщение Перенос базы данных Sql на MS access

Ребят одна маленькая проблемка есть.подскажите как решить .
Код:
ads.Active:=false;
 ads.CommandText:='select * from res_givers, organs where res_givers.rgfname='+quotedstr(rgfname.Text)+' and res_givers.rgnoname='+quotedstr(rgnoname.Text)+' and res_givers.rgorg=organs.oid and organs.oname='+quotedstr(orgname.Text);
 ads.Active:=true;
 if ads.RecordCount=0 then
  begin
   ads.Active:=false;
   ads.CommandText:='select * from organs where organs.oname='+quotedstr(orgname.Text);
   ads.Active:=true;
   adc.CommandText:='insert into res_givers values('+quotedstr(ads.Recordset.Fields[0].get_value)+', '+quotedstr(rgfname.Text)+', '+quotedstr(rgnoname.Text)+')';
   adc.Execute
  end;
 peopds.Active:=false;
 peopds.Filtered:=false;
 peopds.CommandText:='select * from resolution where rregnum='+quotedstr(regnum.Text)+' and rregdate>=:date';
peopds.Parameters.ParamByName('date').DataType := ftDate;
peopds.Parameters.ParamByName('date').Value := regdate.Date;
peopds.Active:=true;
 if peopds.RecordCount=0 then
  begin
   ads.Active:=false;
   ads.CommandText:='select * from res_givers, organs where res_givers.rgfname='+quotedstr(rgfname.Text)+' and res_givers.rgnoname='+quotedstr(rgnoname.Text)+' and res_givers.rgorg=organs.oid and organs.oname='+quotedstr(orgname.Text);
   ads.Active:=true;
   adc.CommandText:='insert into resolution values(0, ' + quotedstr(ads.Recordset.Fields[0].get_value())+', '+quotedstr(art.Text)+', '+quotedstr(regnum.Text)+', :date1, :date2, :date3, :time, ' + quotedstr(floattostr(0))+')';
   adc.Parameters.ParamByName('date1').DataType := ftDate;
   adc.Parameters.ParamByName('date1').Value := regdate.Date;
   adc.Parameters.ParamByName('date2').DataType := ftDate;
   adc.Parameters.ParamByName('date2').Value := date.Date;
   adc.Parameters.ParamByName('date3').DataType := ftDate;
   adc.Parameters.ParamByName('date3').Value := todate.Date;
   adc.Parameters.ParamByName('time').DataType := ftTime;
   adc.Parameters.ParamByName('time').Value := totime.Time;
   adc.Execute
  end;
 for i:=1 to peoples.count do
  begin
   rgds.Active:=false;
   rgds.CommandText:='select * from cities where cname='+quotedstr(peoples.p[i].city);
   rgds.Active:=true;
   if rgds.RecordCount=0 then
    begin
     adc.CommandText:='insert into cities values('+quotedstr(peoples.p[i].city)+')';
     adc.Execute;
     rgds.Active:=false;
     rgds.Active:=true
    end;
   ads.active:=false;
   ads.CommandText:='select * from peoples where pfname='+quotedstr(peoples.p[i].fname)+' and pnname='+quotedstr(peoples.p[i].nname)+' and poname='+quotedstr(peoples.p[i].oname)+' and pwasborn='+inttostr(peoples.p[i].ywb);
   ads.active:=true;
   if ads.RecordCount=0 then
    begin
     adc.CommandText:='insert into peoples values('+quotedstr(peoples.p[i].fname)+', '+quotedstr(peoples.p[i].nname)+', '+quotedstr(peoples.p[i].oname)+', '+inttostr(peoples.p[i].ywb)+', '+quotedstr(rgds.Recordset.Fields[0].get_value())+', '+quotedstr(peoples.p[i].adress)+')';
     adc.Execute;
     ads.Active:=false;
     ads.Active:=true
    end;
   kind.Filter:='sname='+quotedstr(peoples.p[i].stat);
   kind.Filtered:=true;
   if kind.RecordCount=0 then
    begin
     adc.CommandText:='insert into stat values('+quotedstr(peoples.p[i].stat)+')';
     adc.Execute;
     kind.Active:=false;
     kind.Active:=true
    end;
   peopds.Active:=false;
   peopds.Active:=true;
   adc.CommandText:='insert into who_why values('+quotedstr(peopds.Recordset.Fields[0].get_value())+', '+quotedstr(ads.Recordset.Fields[0].get_value())+', '+quotedstr(kind.Recordset.Fields[0].get_value())+')';
   adc.Execute;
   kind.Filtered:=false
  end;
 form1.Close
end;
Есть у меня база данных .в запросах insert into values значения Как я понимаю для акссес нужно как то по другому прописывать? ошибка такая(Проект вызвал исключение класса EOleException с сообщением Изменения не были успешно внесены из-за повторящихся значений в индексе,ключевых полях или связях,Измените данные в поле или полях. И вот в бд у меня код стоит счетчик .а после заполнения в программе она выдает ошибку но добавляет в базу .только не по порядку 1,2,3 а в последовательности 0,0,0.

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 31.05.2017 в 13:12.
Дэдпул вне форума Ответить с цитированием
Старый 31.05.2017, 13:27   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
insert into resolution values(0,
Здесь что-ли со счетчиком? Сделай со списком полей без счетчика и в values тоже 0 для счетчика не нужен
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.05.2017, 13:50   #3
Дэдпул
Пользователь
 
Регистрация: 28.04.2016
Сообщений: 34
По умолчанию

Аватар посмотрите пожалуйста .словами не объясню.Тут нужно самому глянуть что бы понять проблему
Вложения
Тип файла: 7z проект1.7z (863.1 Кб, 13 просмотров)
Дэдпул вне форума Ответить с цитированием
Старый 31.05.2017, 14:50   #4
Дэдпул
Пользователь
 
Регистрация: 28.04.2016
Сообщений: 34
По умолчанию

Посмотрите пожалуйста)
Дэдпул вне форума Ответить с цитированием
Старый 31.05.2017, 14:53   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Я не могу - 7z в игноре, да и скачка не понятно чего не приветствуется на работе ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.05.2017, 15:08   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Дэдпул Посмотреть сообщение
Посмотрите пожалуйста)
посмотрел.

во-первых, Вы забыли сказать, что вход по логину/паролю 1/1

во-вторых, Вам же сказали, как решать проблему - нужно просто указать все поля в INSERT

вот, так, например:
Код:
 ads.Active:=false;
 ads.CommandText:='select * from res_givers, organs where res_givers.rgfname='+quotedstr(rgfname.Text)+' and res_givers.rgnoname='+quotedstr(rgnoname.Text)+' and res_givers.rgorg=organs.oid and organs.oname='+quotedstr(orgname.Text);
 ads.Active:=true;
 if ads.RecordCount=0 then
  begin
   ads.Active:=false;
   ads.CommandText:='select * from organs where organs.oname='+quotedstr(orgname.Text);
   ads.Active:=true;
   if ads.RecordCount>0 then begin
      adc.CommandText:='insert into res_givers (rgorg, rgfname, rgnoname) values('+
          ads.FieldByName('oid').AsString+', '+quotedstr(rgfname.Text)+', '+quotedstr(rgnoname.Text)+')';
      adc.Execute
   end
   else begin
      ShowMessage('Ошибка. В БД нет организации (суда)  '+orgname.Text);
      Exit
   end;
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.05.2017, 15:14   #7
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
нужно просто указать все поля в INSERT
Все, кроме ключей, они в акцессе счётчиками прописаны и вставлять произвольное значение в них нельзя.

Второй вопрос: а FOREIGN KEYS не летят при таком переносе?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 31.05.2017, 15:21   #8
Дэдпул
Пользователь
 
Регистрация: 28.04.2016
Сообщений: 34
По умолчанию Перенос бд с sql на акссес

?
Цитата:
Сообщение от Аватар Посмотреть сообщение
Я не могу - 7z в игноре, да и скачка не понятно чего не приветствуется на работе ))
.Тогда я так попробую у вас спросить. Ввобщем
Код:
unit pds1;



procedure TForm1.ToolButton4Click(Sender: TObject);
var i:integer;
begin
 if peoples.count=0 then
  begin
   messagedlg('',mterror,[mbok],0);
   exit
  end;
 for i:=peoples.cur to peoples.count do
  peoples.p[i]:=peoples.p[i+1];
 peoples.count:=peoples.count-1;
 pfname.Text:=peoples.p[peoples.cur].fname;
 pnname.Text:=peoples.p[peoples.cur].nname;
 poname.Text:=peoples.p[peoples.cur].oname;
 pwb.Text:=inttostr(peoples.p[peoples.cur].ywb);
 pcity.Text:=peoples.p[peoples.cur].city;
 padr.Text:=peoples.p[peoples.cur].adress;
 stat.Text:=peoples.p[peoples.cur].stat 
end;

procedure TForm1.pcityChange(Sender: TObject);
var i:integer;
begin
{ pfname.Text:='';
 pnname.Text:='';
 poname.Text:='';
 pwb.Text:='';
 padr.Text:='';}
 peopds.Filtered:=false;
 peopds.Active:=false;
 peopds.CommandText:='select * from peoples';//, cities where peoples.pcid=cities.cid and cities.cname='+quotedstr(pcity.Text);
 peopds.Active:=true;
 for i:=1 to peopds.RecordCount do
  begin
   pfname.Items.Add(peopds.Recordset.Fields[1].get_value());
   peopds.Next
  end  
end;

procedure TForm1.pfnameChange(Sender: TObject);
var i:integer;
begin
{ if pcity.Text='' then
  begin
   messagedlg('',mterror,[mbok],0);
   exit
  end;
 pnname.Items.Clear;
 pnname.Text:='';
 poname.Items.Clear;
 poname.Text:='';
 pwb.Text:='';
 padr.Text:='';}
 peopds.Filtered:=false;
 peopds.Filter:='pfname='+quotedstr(pfname.Text);
 peopds.Filtered:=true;
 peopds.First;
 if peopds.RecordCount>0 then
  begin
   pnname.Text:=peopds.Recordset.Fields[2].get_value();
   poname.Text:=peopds.Recordset.Fields[3].get_value();
   pwb.Text:=inttostr(peopds.Recordset.Fields[4].get_value());
   padr.Text:=VarToStr(peopds.Recordset.Fields[6].get_value());
  end;
 for i:=1 to peopds.RecordCount do
  begin
   pnname.Items.Add(peopds.Recordset.Fields[2].get_value());
   poname.Items.Add(peopds.Recordset.Fields[3].get_value());
   peopds.Next
  end
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var i:integer;
begin
 if orgname.Text='' then
  begin
   messagedlg('Не все поля заполнены. Сохранение невозможно',mterror,[mbok],0);
   exit
  end;
 if rgfname.Text='' then
  begin
   messagedlg('Не все поля заполнены. Сохранение невозможно',mterror,[mbok],0);
   exit
  end;
 if rgnoname.Text='' then
  begin
   messagedlg('Не все поля заполнены. Сохранение невозможно',mterror,[mbok],0);
   exit
  end;
 if orgadr.Text='' then
  begin
   messagedlg('Не все поля заполнены. Сохранение невозможно',mterror,[mbok],0);
   exit
  end;
 if regnum.Text='' then
  begin
   messagedlg('Не все поля заполнены. Сохранение невозможно',mterror,[mbok],0);
   exit
  end;
 if peoples.count=0 then
  begin
   messagedlg('Не все поля заполнены. Сохранение невозможно',mterror,[mbok],0);
   exit
  end;
 if art.Text='' then
  begin
   messagedlg('Не все поля заполнены. Сохранение невозможно',mterror,[mbok],0);
   exit
  end;

 ads.Active:=false;
 ads.CommandText:='select * from organs where organs.oname='+quotedstr(orgname.Text);
 ads.Active:=true;
 if ads.RecordCount=0 then
  begin
   form3.eoname.Text:=orgname.Text;
   form3.showmodal
  end;
 ads.Active:=false;
 ads.CommandText:='select * from res_givers, organs where res_givers.rgfname='+quotedstr(rgfname.Text)+' and res_givers.rgnoname='+quotedstr(rgnoname.Text)+' and res_givers.rgorg=organs.oid and organs.oname='+quotedstr(orgname.Text);
 ads.Active:=true;
 if ads.RecordCount=0 then
  begin
   ads.Active:=false;
   ads.CommandText:='select * from organs where organs.oname='+quotedstr(orgname.Text);
   ads.Active:=true;
   adc.CommandText:='insert into res_givers values('+quotedstr(ads.Recordset.Fields[0].get_value)+', '+quotedstr(rgfname.Text)+', '+quotedstr(rgnoname.Text)+')';
   adc.Execute
  end;
 peopds.Active:=false;
 peopds.Filtered:=false;
 peopds.CommandText:='select * from resolution where rregnum='+quotedstr(regnum.Text)+' and rregdate>=:date';
peopds.Parameters.ParamByName('date').DataType := ftDate;
peopds.Parameters.ParamByName('date').Value := regdate.Date;
peopds.Active:=true;
 if peopds.RecordCount=0 then
  begin
   ads.Active:=false;
   ads.CommandText:='select * from res_givers, organs where res_givers.rgfname='+quotedstr(rgfname.Text)+' and res_givers.rgnoname='+quotedstr(rgnoname.Text)+' and res_givers.rgorg=organs.oid and organs.oname='+quotedstr(orgname.Text);
   ads.Active:=true;
   adc.CommandText:='insert into resolution values(0, ' + quotedstr(ads.Recordset.Fields[0].get_value())+', '+quotedstr(art.Text)+', '+quotedstr(regnum.Text)+', :date1, :date2, :date3, :time, ' + quotedstr(floattostr(0))+')';
   adc.Parameters.ParamByName('date1').DataType := ftDate;
   adc.Parameters.ParamByName('date1').Value := regdate.Date;
   adc.Parameters.ParamByName('date2').DataType := ftDate;
   adc.Parameters.ParamByName('date2').Value := date.Date;
   adc.Parameters.ParamByName('date3').DataType := ftDate;
   adc.Parameters.ParamByName('date3').Value := todate.Date;
   adc.Parameters.ParamByName('time').DataType := ftTime;
   adc.Parameters.ParamByName('time').Value := totime.Time;
   adc.Execute
  end;
 for i:=1 to peoples.count do
  begin
   rgds.Active:=false;
   rgds.CommandText:='select * from cities where cname='+quotedstr(peoples.p[i].city);
   rgds.Active:=true;
   if rgds.RecordCount=0 then
    begin
     adc.CommandText:='insert into cities values('+quotedstr(peoples.p[i].city)+')';
     adc.Execute;
     rgds.Active:=false;
     rgds.Active:=true
    end;
   ads.active:=false;
   ads.CommandText:='select * from peoples where pfname='+quotedstr(peoples.p[i].fname)+' and pnname='+quotedstr(peoples.p[i].nname)+' and poname='+quotedstr(peoples.p[i].oname)+' and pwasborn='+inttostr(peoples.p[i].ywb);
   ads.active:=true;
   if ads.RecordCount=0 then
    begin
     adc.CommandText:='insert into peoples values('+quotedstr(peoples.p[i].fname)+', '+quotedstr(peoples.p[i].nname)+', '+quotedstr(peoples.p[i].oname)+', '+inttostr(peoples.p[i].ywb)+', '+quotedstr(rgds.Recordset.Fields[0].get_value())+', '+quotedstr(peoples.p[i].adress)+')';
     adc.Execute;
     ads.Active:=false;
     ads.Active:=true
    end;
   kind.Filter:='sname='+quotedstr(peoples.p[i].stat);
   kind.Filtered:=true;
   if kind.RecordCount=0 then
    begin
     adc.CommandText:='insert into stat values('+quotedstr(peoples.p[i].stat)+')';
     adc.Execute;
     kind.Active:=false;
     kind.Active:=true
    end;
   peopds.Active:=false;
   peopds.Active:=true;
   adc.CommandText:='insert into who_why values('+quotedstr(peopds.Recordset.Fields[0].get_value())+', '+quotedstr(ads.Recordset.Fields[0].get_value())+', '+quotedstr(kind.Recordset.Fields[0].get_value())+')';
   adc.Execute;
   kind.Filtered:=false
  end;
 form1.Close
end;

procedure TForm1.rgfnameChange(Sender: TObject);
begin
 rgds.Filter:='rgfname='+quotedstr(rgfname.Text);
 rgds.Filtered:=true;
 if rgds.RecordCount=1 then rgnoname.Text:=rgds.Recordset.Fields[1].get_value();
 rgds.Filtered:=false
end;

end.
.В таблице Resolution ключевое поле стоит счетчик .Когда работаю на самой програмке (заполня данными )нажимаю окей и он ошибку выдает .А в самой базе запись появляется .но в поле где у меня стоит счетчик стоит 0 .а там должно по порядку 1 2 3 4 и т.д
Изображения
Тип файла: jpg схема.jpg (51.3 Кб, 133 просмотров)
Тип файла: jpg Снимок.JPG (25.1 Кб, 132 просмотров)
Тип файла: jpg 11.JPG (71.7 Кб, 50 просмотров)
Дэдпул вне форума Ответить с цитированием
Старый 31.05.2017, 15:23   #9
Дэдпул
Пользователь
 
Регистрация: 28.04.2016
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Второй вопрос: а FOREIGN KEYS не летят при таком переносе?
Не понял
Дэдпул вне форума Ответить с цитированием
Старый 31.05.2017, 15:29   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Все, кроме ключей, они в акцессе счётчиками
да, всё верно, все поля, кроме тех полей, где поле - это счётчик!!!
ещё можно опустить поля, где есть значение "по умолчанию" (by default), если нет информации, которые надо вставить в эти поля.


Цитата:
Сообщение от Дэдпул Посмотреть сообщение
Тогда я так попробую у вас спросить. Ввобщем
я ответил выше и дал кусок кода, который РАБОТАЕТ.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перенос базы данных на sql server ce ts-alan C/C++ Базы данных 1 27.03.2014 20:50
Перенос базы данных. (Microsoft SQL Server 2005) Gleg БД в Delphi 8 15.01.2013 21:29
Преобразование базы данных Access в формат SQL Server Alar Microsoft Office Access 5 18.04.2010 01:46
перенос данных из Access в MS SQL Server2000 ГОСЕАН БД в Delphi 5 28.12.2007 12:31