0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 8
1

Ошибка "Record, object or class type required"

27.02.2015, 04:36. Показов 1075. Ответов 13
Метки нет (Все метки)

Здравствуйте!
Пишу процедуру удаления и delphi выдаёт ошибку "Record, object or class type required", ссылаясь на 9 строку.
Помогите, пожалуйста, найти ошибку!

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm_post_tovar.Button2Click(Sender: TObject);
begin //Удалить запись, если записи отсутствуют, то вывести сообщение, иначе запись удалить
  if dbgrid1.DataSource.DataSet.RecordCount<>0 then
    begin
     if (MessageBox(Handle, 'Вы действительно хотите удалить запись?', 'Удаление', MB_YESNO)=  IDYES) then
      begin
        dm.table_post_tovar.Edit;
        form_post_tovar1.table_magazin.Edit; //из таблицы магазин
        dm.ADOQuery_delete.SQL.Clear;
        dm.ADOQuery_delete.DataSource:=dm.post_tovar;
        dm.ADOQuery_delete.SQL.Add('DELETE Магазин.*, Магазин.Код FROM Магазин WHERE (((Магазин.Код_post_tovar)=:Код));');
        dm.ADOQuery_delete.ExesSQL;
        dm.ADOQuery_delete.Active:=false; //из таблицы post_tovar
        dm.table_post_tovar.Edit;
        dm.table_podt_tovar.Delete;
      end;
      end
     else ShowMessage('Нет записей для удаления');
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2015, 04:36
Ответы с готовыми решениями:

Ошибка: Record, object or class type required
Я пытаюсь при нажатии на кнопку занести значения из Label с Form1 в таблицу BDGrid на Form4. Вот...

Ошибка при добавлении записи в таблицу БД "Could not convert variant of type "NULL" into type "OleStr"
Здравствуйте. При работе программы вылетает ошибка &quot;Could not convert variant of type &quot;NULL&quot;...

Ошибка "Could convert variant of type (Null) into type (oleStr)"
Пишу программу для курсовой работы, программка на тему АРМ Администратора анти-кафе, выскакивает...

Ошибка: "Could not convert variant of type (Null) into type (OleStr)"
Проблема поиска выдаёт ошибку &quot;Could not convert variant of type (Null) into type (OleStr)&quot; ...

13
528 / 466 / 182
Регистрация: 11.12.2013
Сообщений: 2,456
27.02.2015, 09:38 2
строки 9-13 замените на
Delphi
1
2
3
4
5
6
with dm.ADOQuery_delete do begin
  DataSource:=dm.post_tovar;
  SQL.Text:='DELETE Магазин.*, Магазин.Код FROM Магазин WHERE (((Магазин.Код_post_tovar)=:Код));';
  ExecSQL;
  Close;
end;
у Вас ошибка в 12 строке нужно ExecSQL.
0
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 8
28.02.2015, 05:42  [ТС] 3
Спасибо Вам за помощь. Эта ошибка пропала, но delphi ругается и находит другие.
0
528 / 466 / 182
Регистрация: 11.12.2013
Сообщений: 2,456
28.02.2015, 09:34 4
Спрашивайте, поможем исправить другие ошибки
0
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 8
01.03.2015, 15:12  [ТС] 5
После исправлений модуль выглядит так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
unit post_tovar;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, StdCtrls;
 
type
  TForm_post_tovar = class(TForm)
    Button1: TButton;
    Button2: TButton;
    DBGrid1: TDBGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form_post_tovar: TForm_post_tovar;
 
implementation
 
{$R *.dfm}
Uses general, dm1, post_tovar1;
procedure TForm_post_tovar.Button1Click(Sender: TObject);
begin //Новая запись
  form_post_tovar.Caption:='Поступление товара: новое';
  dm.table_post_tovar.Edit;
  dm.table_post_tovar.Append;
  form_post_tovar1.DateTimePicker1.Date:=sysutils.Date;
  form_post_tovar1.doc_number.Text:='';
  form_post_tovar.ShowModal;
end;
 
procedure TForm_post_tovar.Button2Click(Sender: TObject);
begin //Удалить запись
//если записи отсутствуют, то вывести сообщение, иначе запись удалить
  if dbgrid1.DataSource.DataSet.RecordCount<>0 then
    begin
     if (MessageBox(Handle, 'Вы действительно хотите удалить запись?', 'Удаление', MB_YESNO)=  IDYES) then
      begin
        dm.table_post_tovar.Edit;
        form_post_tovar1.table_magazin.Edit; //из таблицы магазин
        with dm.ADOQuery_delete do begin
        DataSource:=dm.post_tovar;
        SQL.Text:='DELETE Магазин.*, Магазин.Код FROM Магазин WHERE (((Магазин.Код_post_tovar)=:Код));';
        dm.ADOQuery_delete.ExecSQL;
        Close;
        end;
        dm.table_post_tovar.Edit; // из таблицы post_tovar
        dm.table_podt_tovar.Delete;
      end;
      end
     else ShowMessage('Нет записей для удаления');
end;
 
end.
А ошибки такие:
[Error] post_tovar.pas(46): Undeclared identifier: 'SQL'
[Error] post_tovar.pas(52): ';' expected but '.' found
[Error] post_tovar.pas(54): Declaration expected but end of file found
0
пофигист широкого профиля
4632 / 3077 / 852
Регистрация: 15.07.2013
Сообщений: 17,733
01.03.2015, 16:54 6
Цитата Сообщение от sv11 Посмотреть сообщение
А ошибки такие:
Такое впечатление что ошибки относятся к какому-то другому коду.
0
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 8
01.03.2015, 17:10  [ТС] 7
До этого ещё была Undeclared identifier: 'ExecSQL' в 51 строке - сейчас всё нормально.
А с оставшимися вообще не знаю как быть.
0
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 8
03.03.2015, 00:46  [ТС] 8
Подскажите что-нибудь, а то я уже неделю ничего с ними сделать не могу.
0
пофигист широкого профиля
4632 / 3077 / 852
Регистрация: 15.07.2013
Сообщений: 17,733
03.03.2015, 01:55 9
Цитата Сообщение от sv11 Посмотреть сообщение
Подскажите что-нибудь, а то я уже неделю ничего с ними сделать не могу
Архивируй проект вместе с БД и прикладывай к сообщению.
0
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 8
03.03.2015, 03:12  [ТС] 10
Вот архив
Вложения
Тип файла: rar arhiv_1.rar (393.0 Кб, 7 просмотров)
0
пофигист широкого профиля
4632 / 3077 / 852
Регистрация: 15.07.2013
Сообщений: 17,733
03.03.2015, 10:56 11
sv11, держи вылеченный модуль post_tovar. Как ты умудрился так его изуродовать ума не приложу.
Вложения
Тип файла: rar post_tovar.rar (2.4 Кб, 6 просмотров)
0
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 8
03.03.2015, 15:25  [ТС] 12
Благодарю. Как Вы исправили? Что у меня было не так?
0
пофигист широкого профиля
4632 / 3077 / 852
Регистрация: 15.07.2013
Сообщений: 17,733
03.03.2015, 20:56 13
Цитата Сообщение от sv11 Посмотреть сообщение
Что у меня было не так?
А ты открой post_tovar.pas из твоего архива в стандартном блокноте. Сам увидишь.
В нескольких местах вместо двух символов 0D0A при переводе строк стоял только один 0D. Редактор IDE Дельфи воспринимает такую ситуацию как перевод строки. А вот компилятор не воспринимает ее как перевод. Так что с точки зрения компилятора код выглядел примерно так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm_post_tovar.Button2Click(Sender: TObject);
begin //Удалить запись
//если записи отсутствуют, то вывести сообщение, иначе запись удалить
  if dbgrid1.DataSource.DataSet.RecordCount<>0 then
    begin
     if (MessageBox(Handle, 'Вы действительно хотите удалить запись?', 'Удаление', MB_YESNO)=  IDYES) then
      begin        dm.table_post_tovar.Edit;        form_post_tovar1.table_magazin.Edit; //из таблицы магазин        with dm.ADOQuery_delete do begin
        DataSource:=dm.post_tovar;
        SQL.Text:='DELETE Магазин.*, Магазин.Код FROM Магазин WHERE (((Магазин.Код_post_tovar)=:Код));';
        dm.ADOQuery_delete.ExecSQL;
        Close;
        end;        dm.table_post_tovar.Edit;  //из таблицы post_tovar        dm.table_post_tovar.Delete;
        end;      end     else ShowMessage('Нет записей для удаления');
end;
 
end.
0
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 8
03.03.2015, 21:28  [ТС] 14
Всё ясно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2015, 21:28
Помогаю со студенческими работами здесь

Ошибка "Could not convert variant of type (String) into type (Double)"
Что может значить эта ошибка? она выходит, когда я пользуюсь выпадающими полями в делфи7.

Ошибка: "Could not convert variant of type (Null) into type (OleStr)"
Здравствуйте, помогите с такой ошибкой: при выборе ячейки в DBGrid вылетает ошибка как во вложении....

Ошибка "Поле не может содержние Null, так как свойство Required имеет значение True"
Когда пытаюсь заполнить таблицу из edit в БД (dbgrid) выдает ошибку &quot;Поле не может содержние Null ,...

Ошибка "record, object of file type required" при компиляции
При компиляции выдает ошибку &quot;record, object of file type required&quot;,выделяет последнюю строку с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru