Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Перенос бд с sql на акссес [D7]


босмолокосос   (31.05.17 12:37

Здравствуйте .Ребят такая проблемка .После переноса с sql базу данных на акссес программа выдает ошибку .а точнее

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.
в запросах insert into res_givers values .Как я понимаю для акссес нужно как то по другому прописывать? ошибка такая(Проект вызвал исключение класса EOleException с сообщением Изменения не были успешно внесены из-за повторящихся значений в индексе,ключевых полях или связях,Измените данные в поле или полях. И вот в бд у меня код стоит счетчик .а после заполнения в программе она выдает ошибку но добавляет в базу .только не по порядку 1,2,3 а в последовательности 0,0,0


босмолокосос   (31.05.17 12:41[1]

adc.CommandText:='insert into cities values('+quotedstr(peoples.p[i].city)+')'; точнее insert нужно как то по другому прописать


sniknik ©   (31.05.17 13:49[2]

> Изменения не были успешно внесены из-за повторящихся значений в индексе,ключевых полях или связях,Измените данные в поле или полях.
верь этому. в поле с уникальным индексом, как ни прописывай, а 2 одинаковых значения не внести (если это не null и индекс исключающий null, не помню поддерживает такой аккесс или нет). ищи что за поле/индекс мешает, и либо убери его, либо данные в него не дублируй.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо