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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2010, 11:39   #1
Cannibal
Форумчанин
 
Регистрация: 17.02.2008
Сообщений: 191
По умолчанию делфи ругается при добавлении записи

при выполнении кода на строке выделенной красным возникает ошибка, показанная на первом рисунке. схема БД показана на втором рисунке. не для всех записей таблицы Pupils есть запись в таблице disability.
Код:
 datamodule2.ADOQuery1.Active:=false;
  datamodule2.ADOQuery1.SQL.Clear;
  datamodule2.ADOQuery1.SQL.Add('INSERT into pupil ');
  datamodule2.ADOQuery1.SQL.Add('(sername, nam, fname,pol, birthday,adress, phone)');
  datamodule2.ADOQuery1.SQL.Add('values ('+ chr(39)+ family.Text+chr(39)+','+
   chr(39)+ Ima.Text+chr(39)+','+chr(39)+ otchestvo.Text+chr(39)+','+chr(39)+ pol.Text+chr(39)+','+
    chr(39)+ birthday.Text+chr(39)+','+chr(39)+ adress.Text+chr(39)+','+chr(39)+ phone.Text+chr(39)+')');
  datamodule2.ADOQuery1.Active:=true;
  datamodule2.ADOQuery1.ExecSQL;

  datamodule2.ADOQuery1.Active:=false;
  datamodule2.ADOQuery1.SQL.Clear;
  datamodule2.ADOQuery1.SQL.Add('INSERT into school');
  datamodule2.ADOQuery1.SQL.Add('(pupilid,godobuch,class,progid,formid,zach, putevka, pmpk,  zabolevanie, disability, logoped,gpd,ssd)');
  datamodule2.ADOQuery1.SQL.Add('VALUES ('+datamodule2.pupilPupilId.AsString +','+
   chr(39)+ clas.Text+chr(39)+','+chr(39)+ osh.Text+chr(39)+','+inttostr(progr.ItemIndex+1)+','+inttostr(forma.itemindex+1)+','+
    chr(39)+zachisl.Text+chr(39)+','+chr(39)+ putevka.text+chr(39)+','+chr(39)+pmpk.Text+chr(39)+','+
     chr(39)+ Dz.Text+chr(39)+','+chr(39)+booltostr(disability.Checked)+chr(39)+','+
      chr(39)+booltostr(logoped.Checked)+chr(39)+','+chr(39)+booltostr(gpd.Checked)+
       chr(39)+','+chr(39)+booltostr(ccd.Checked)+chr(39)+')');
  datamodule2.ADOQuery1.Active:=true;
  datamodule2.ADOQuery1.ExecSQL;

  datamodule2.ADOQuery1.Active:=false;
  datamodule2.ADOQuery1.SQL.Clear;
  datamodule2.ADOQuery1.SQL.Add('insert into parents (pupilid, mother,phonemother,father,phonefather)');
  datamodule2.ADOQuery1.SQL.Add('values ('+datamodule2.pupilPupilId.AsString+','+chr(39)+ momfio.Text+chr(39)+','+
   chr(39)+ momphone.Text+chr(39)+','+chr(39)+ dadfio.Text+chr(39)+','+chr(39)+ dadphone.Text+chr(39)+')');
  datamodule2.ADOQuery1.Active:=true;
  datamodule2.ADOQuery1.ExecSQL;

  datamodule2.ADOQuery1.Active:=false;
  datamodule2.ADOQuery1.SQL.Clear;
  datamodule2.ADOQuery1.SQL.Add('insert into disability (pupilid, nospravki,beg)');
  datamodule2.ADOQuery1.SQL.Add('values ('+datamodule2.pupilPupilId.AsString+','+chr(39)+
   nomer.Text+chr(39)+','+chr(39)+ beg.Text+chr(39)+')');
  datamodule2.ADOQuery1.Active:=true;
  datamodule2.ADOQuery1.ExecSQL;
Изображения
Тип файла: jpg error.JPG (26.5 Кб, 112 просмотров)
Тип файла: jpg схемаБД.JPG (49.3 Кб, 133 просмотров)
Mathematicians often mix up Christmas and Halloween, because Dec.25=Oct.31.
Cannibal вне форума Ответить с цитированием
Старый 21.04.2010, 11:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Правильно ругается
datamodule2.ADOQuery1.Active:=true; убери.
И привыкай к хорошему тону:
Вместо chr(39)+ family.Text+chr(39)
Код:
+QuotedStr(family.Text)+
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.04.2010, 11:57   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Cannibal
А что, в один запрос все это нельзя было сделать?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 21.04.2010, 12:28   #4
Cannibal
Форумчанин
 
Регистрация: 17.02.2008
Сообщений: 191
По умолчанию

но та же ошибка строчкой ниже
artemavd
Сделал в один, но ругается на енд после последнего запроса "Обнаружены символы за пределами инструкции SQL"
Mathematicians often mix up Christmas and Halloween, because Dec.25=Oct.31.

Последний раз редактировалось Cannibal; 21.04.2010 в 13:07.
Cannibal вне форума Ответить с цитированием
Старый 21.04.2010, 12:42   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но та же ошибка строчкой ниже
Ну дык сделай тоже самое
Во шутник...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.04.2010, 12:55   #6
Cannibal
Форумчанин
 
Регистрация: 17.02.2008
Сообщений: 191
По умолчанию

Цитата:
Ну дык сделай тоже самое
Во шутник...
дак убрал я все Active. Уж не совсем тупой
Mathematicians often mix up Christmas and Halloween, because Dec.25=Oct.31.
Cannibal вне форума Ответить с цитированием
Старый 21.04.2010, 13:41   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
 
with datamodule2.ADOQuery1 do begin
 Active:=false;
 SQL.Text:=('INSERT into pupil (sername, nam, fname,pol, birthday,adress, phone) ');
 SQL.Add(' values ('+
  QuotedStr(family.Text)+','+
  QuotedStr(Ima.Text)+','+
  QuotedStr(otchestvo.Text)+','+
  QuotedStr(pol.Text)+','+
  QuotedStr(birthday.Text)+','+
  QuotedStr(adress.Text)+','+ 
  QuotedStr(phone.Text)+
 ')');
 ExecSQL;
Вот так напиши каждый запрос, и проверь.
I'm learning to live...

Последний раз редактировалось Stilet; 21.04.2010 в 13:44.
Stilet вне форума Ответить с цитированием
Старый 22.04.2010, 16:09   #8
Cannibal
Форумчанин
 
Регистрация: 17.02.2008
Сообщений: 191
По умолчанию

Переписал этот кусок другим способом - все-равно ошибка, как в первом посте.
Код:
  Datamodule2.pupil.append;
  if family.Text<>#0 then
    datamodule2.pupil.FieldByName('sername').AsString:=Family.Text;
  if ima.Text<>#0 then
    datamodule2.pupil.FieldByName('Nam').AsString:=ima.Text;
  if otchestvo.Text<>#0 then
    datamodule2.pupil.FieldByName('Fname').AsString:=otchestvo.Text;
  datamodule2.pupil.FieldByName('Pol').AsString:=pol.Text;
  if birthday.Text<>da then
    datamodule2.pupil.FieldByName('Birthday').AsDateTime:=strtodate(birthday.Text);
  if adress.Text<>#0 then
    datamodule2.pupil.FieldByName('Adress').AsString:=(adress.Text);
  if phone.Text<>DT then
    datamodule2.pupil.FieldByName('Phone').AsString:=phone.Text;
  datamodule2.pupil.Post;

  datamodule2.school.Append;
  datamodule2.school.FieldByName('pupilid').AsInteger:=datamodule2.pupil.FieldByName('pupilid').AsInteger;
  if clas.text<>#0 then
    datamodule2.school.FieldByName('GodObuch').AsInteger:=strtoint(clas.Text);
  if osh.Text<>#0 then
    datamodule2.school.FieldByName('Class').AsInteger:=strtoint(osh.Text);
  datamodule2.school.FieldByName('progid').AsInteger:=progr.ItemIndex+1;
  datamodule2.school.FieldByName('formid').AsInteger:=forma.itemindex+1;
  if zachisl.text<>da then
    datamodule2.school.FieldByName('zach').AsDateTime:= Strtodate(zachisl.Text);
  if putevka.text<>#0 then
    datamodule2.school.FieldByName('putevka').AsString:=putevka.text;
  if pmpk.text<>Dt then
    datamodule2.school.FieldByName('pmpk').AsString:=pmpk.Text;
  if dz.text<>#0 then
    datamodule2.school.FieldByName('zabolevanie').AsString:=Dz.Text;
  datamodule2.school.FieldByName('disability').AsBoolean:=disability.Checked;
  datamodule2.school.FieldByName('logoped').AsBoolean:=logoped.Checked;
  datamodule2.school.FieldByName('GPD').AsBoolean:=gpd.Checked;
  datamodule2.school.FieldByName('ssd').AsBoolean:=ccd.Checked;
  datamodule2.school.Post;

  datamodule2.parents.Append;
  datamodule2.parents.FieldByName('pupilid').AsInteger:=datamodule2.pupil.FieldByName('pupilid').AsInteger;
  if momfio.Text=#0 then
    datamodule2.parents.FieldByName('mother').AsString:=momfio.Text;
  if momphone.Text=MT then
    datamodule2.parents.FieldByName('phoneMother').AsString:=momphone.Text;
  if dadfio.Text=#0 then
    datamodule2.parents.FieldByName('father').AsString:=dadfio.Text;
  if dadphone.Text=MT then
    datamodule2.parents.FieldByName('PhoneFather').AsString:=dadphone.Text;
  datamodule2.parents.Post;

  if disability.checked then
  begin
    datamodule2.disability.Append;
    datamodule2.disability.FieldByName('pupilid').AsInteger:=datamodule2.pupil.FieldByName('pupilid').AsInteger;
    if nomer.Text=#0 then
      datamodule2.disability.FieldByName('nospravki').AsString:=nomer.Text;
    if beg.Text=dt then
      datamodule2.parents.FieldByName('beg').AsString:=beg.Text;
  end;
Mathematicians often mix up Christmas and Halloween, because Dec.25=Oct.31.
Cannibal вне форума Ответить с цитированием
Старый 23.04.2010, 15:49   #9
plato
Форумчанин
 
Регистрация: 23.01.2009
Сообщений: 107
По умолчанию

Для начала разберись со своими "disability". А то это у тебя и имя таблицы, и поле в таблице "школа", и чек на форме. изменил бы имена и ошибок бы меньше было.
и не забудьте подарить детям шоколадку
plato вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие при добавлении записи в BDGrid Alexeyss БД в Delphi 2 19.08.2009 23:37
Делфи ругается на массив из символов spamer Общие вопросы Delphi 3 25.05.2009 23:46
Проверка при добавлении записи Tanya2008 БД в Delphi 3 22.04.2009 10:07
Проблема при добавлении в БД Oleg Romanchuk БД в Delphi 2 12.01.2009 12:21
при добавлении новой записи через форму подставлолось значение из другой таблицы Baxxter Microsoft Office Access 1 07.01.2009 22:23