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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2016, 03:32   #1
manfromkz
Новичок
Джуниор
 
Регистрация: 10.05.2016
Сообщений: 1
По умолчанию Ошибка "Undeclared identifier" и "Missing operator or semicolon"

Здравствуйте! У меня возникла проблема. Поместил на DataModule компоненты ADOConnection, ADOQuery, DataSource и ADOStoredProc. Всё работало, пока не начал запускать хранимую процедуру с помощью кнопки. На Form поместил DBGrid и Button. С помощью Button пытаюсь запустить хранимую процедуру (прописал в Button ADOStoredProc1.ExecProc; ADOQuery1.Refresh; ), но появляются ошибки Undeclared identifier: 'ADOStoredProc1', 'Missing operator or semicolon' и Undeclared identifier: 'ADOQuery1'. Когда размещаю все компоненты на одной форме всё получается, НО мне по заданию нужно расположить ADOStoredProc и ADOQuery именно на DataModule! Что нужно прописать, чтобы заработало??? Помогите, пожалуйста, заранее спасибо!!!
Вот полный код формы:
Код:
unit Unit3;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit10, Grids, DBGrids, ComCtrls, StdCtrls;
 
type
  TForm3 = class(TForm)
    PageControl1: TPageControl;
    DBGrid1: TDBGrid;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form3: TForm3;
 
implementation
 
{$R *.dfm}
 
procedure TForm3.Button1Click(Sender: TObject);
begin
ADOStoredProc1.ExecProc;
ADOQuery1.Refresh;
end;
 
procedure TForm3.Button2Click(Sender: TObject);
begin
ADOStoredProc2.ExecProc;
ADOQuery1.Refresh;
end;
 
procedure TForm3.Button3Click(Sender: TObject);
begin
ADOStoredProc3.ExecProc;
ADOQuery1.Refresh;
end;
 
end.
А вот полный код дата модуля:
Код:
unit Unit10;
 
interface
 
uses
  SysUtils, Classes, ADODB, DB;
 
type
  TDataModule10 = class(TDataModule)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    ADOStoredProc1: TADOStoredProc;
    ADOStoredProc2: TADOStoredProc;
    ADOStoredProc3: TADOStoredProc;
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  DataModule10: TDataModule10;
 
implementation
 
{$R *.dfm}
 
end.
manfromkz вне форума Ответить с цитированием
Старый 10.05.2016, 09:22   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Когда размещаю все компоненты на одной форме всё получается, НО мне по заданию нужно расположить ADOStoredProc и ADOQuery именно на DataModule! Что нужно прописать, чтобы заработало???
http://programmersforum.ru/showpost....01&postcount=4
P.S. DataModule тоже можно считать формой, только особой - неОТОБРАЖАЕМОЙ.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 10.05.2016, 09:42   #3
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

evg_m +
Судя по коду у вас не хватает правильной связки с модулем.
Код:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit10, Grids, DBGrids, ComCtrls, StdCtrls;
уберите отсюда Unit10 и нажмите Alt+F11
при Открытом Unit3 и выберете ваш дата модуль из списка.

П.С,
обращаться к компоненту находящимуся на другой форме нужно через имя формы в вашем случае
Код:
procedure TForm3.Button3Click(Sender: TObject);
begin
DataModule10.ADOStoredProc3.ExecProc;
DataModule10.ADOQuery1.Refresh;
end;
или
Код:
procedure TForm3.Button2Click(Sender: TObject);
begin
With DataModule10 do 
  Begin
    ADOStoredProc2.ExecProc;
    ADOQuery1.Refresh;
  end;
end;
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 10.05.2016 в 09:53. Причина: забыл
Dvoishnik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка "Undeclared identifier: 'SQL'" sv11 БД в Delphi 5 03.03.2015 16:24
ошибкa "missing operator or semicolon" Дим@@ Помощь студентам 3 11.11.2010 15:14