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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2009, 13:39   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Ошибка в БД

Добрый день! Подскажите пожалуйста, что значит эта ошибка: "Type mismatch for field 'ID_Predmet',expecting: String actual Float'"?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.06.2009, 14:13   #2
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Несоответствие типов. Попытка вставить число в строковое поле.
зы. заключи значение для ID_Predmet в ковычки

Последний раз редактировалось S@fer; 23.06.2009 в 14:15. Причина: Добавление
S@fer вне форума Ответить с цитированием
Старый 23.06.2009, 14:25   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Да я всего лишь в этом коде вставки значений:
Код:
procedure TForm2.SpeedButton4Click(Sender: TObject);
var
 i:integer;
begin
 i:=1;
 while Form1.SG9.Cells[1,i] <> '' do begin
  if Form2.Table1.Locate('LAST_NAME;FIRST_NAME;OTCHESTVO',VarArrayOf([Form1.SG9.Cells[1,i],
                                 Form1.SG9.Cells[2,i],Form1.SG9.Cells[3,i]]),
                                 [loCaseInsensitive,loPartialKey]) = False then
  begin
     Table1.Insert;
     Table1.FieldByName('KLASS').AsString:=Form1.Edit2.Text;
     Table1.FieldByName('LAST_NAME').AsString:=Form1.SG9.Cells[1,i];
     Table1.FieldByName('FIRST_NAME').AsString:=Form1.SG9.Cells[2,i];
     Table1.FieldByName('OTCHESTVO').AsString:=Form1.SG9.Cells[3,i];
     Table1.Post;
     Table1.Refresh;
  end;

  if Table_74.Locate('Chetvert;GOD',VarArrayOf([Form1.DBLookupComboBox2.Text,
                                                Form1.Edit3.Text]),
                                 [loCaseInsensitive,loPartialKey]) = False then
  begin
   Table2.Refresh;
   Table_74.Insert;
   Table_74.FieldByName('Chetvert').AsString:=Form1.DBLookupComboBox2.Text;
   Table_74.FieldByName('GOD').AsString:=Form1.Edit3.Text;
   Table_74.Post;
  end;

  begin
   Table3.Insert;
   Table3.FieldByName('ID_Chetvert').AsInteger:=Table_74.FieldByName('ID').AsInteger;
   Table3.FieldByName('IDInfo_2').AsInteger:=Table1.FieldByName('ID').AsInteger;
   Table3.FieldByName('ID_Predmet').AsInteger:=Table2.FieldByName('ID_Predmet').AsInteger;

   Table3.FieldByName('DVOEK').AsString:=Form1.SG2.Cells[0,i];
   Table3.FieldByName('TROEK').AsString:=Form1.SG2.Cells[1,i];
   Table3.FieldByName('CHETVEROK').AsString:=Form1.SG2.Cells[2,i];
   Table3.FieldByName('PYTEROK').AsString:=Form1.SG2.Cells[3,i];
   Table3.FieldByName('KO').AsString:=Form1.SG3.Cells[0,i];
   Table3.FieldByName('SB').AsString:=Form1.SG3.Cells[1,i];
   Table3.FieldByName('KY').AsString:=Form1.SG3.Cells[2,i];
   Table3.FieldByName('Y').AsString:=Form1.SG3.Cells[3,i];
   Table3.FieldByName('O').AsString:=Form1.SG3.Cells[4,i];
   Table3.FieldByName('CHO').AsString:=Form1.SG3.Cells[5,i];
   Table3.Post;
     end;
   Inc(i);
  end;
end;
добавил строчку которая выделена красным цветом. Я таким образом пытался связать таблицы predmety и rezult по этим полям. У меня в таблицу rezult в поле ID_Predmet заносится номер (ID_Predmet) предмета из таблицы predmety. В обоих таблицах поле ID_Predmet имеет тип N. Кстати, эта ошибка появляется сразу при компиляции. Как можно попробовать исправить ее?
P.S. Мой 600ти сотый пост
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.06.2009, 14:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попробуй без типизации:
Код:
Table3.FieldByName('ID_Predmet'):=Table2.FieldByName('ID_Predmet');
p.S. ИМХО лучше это делать через SQL-INSERT
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Nero - ошибка драйвера DMA. ошибка CRC NecRoMat Софт 5 09.05.2012 01:29
С++ Ошибка! napanin Помощь студентам 2 11.06.2009 18:46
Ошибка в Аfor i:=1 to SI do. Пишит что ошибка в SI Алексей_xXx Помощь студентам 2 29.05.2009 00:09
...Ошибка 101 (net::ERR_CONNECTION_RESET): Неизвестная ошибка... infrared Помощь студентам 0 16.04.2009 17:44