2016-10-30 24 views
1
uses dmInfo; 

{$R *.dfm} 

procedure TForm3.Button1Click(Sender: TObject); 

begin 

with dmInfo do 

begin 

tblInfo.Open; 

end; 

いくつかのわかりやすい理由から、tblInfoは宣言されていない識別子とみなされます。助けてください。宣言されていない識別子データベーステーブルが認識されない

おかげ

+2

データモジュールに「DataModule」のような名前が付けられていることに同意していることが分かりましたが、本当の問題は名前付けの方法です。まず、重要な**オブジェクト**にDataModuleの代わりに意味のある名前dmInfoを与えてから、そのオブジェクトの名前に基づいてユニットの名前を選択します。システムの接尾辞は次のようになります。 dmInfou)または接頭辞。あなたがその習慣に慣れていれば、あなたはこのqを生み出したような滑りを避けるでしょう。また、疫病のような "with"を避けてください。 – MartynA

答えて

4

コンパイラは、あなたがそれをqualifedていないため「tblInfo」であるものを解決することはできません。これはユニット 'dmInfo'の範囲内に直接存在するものではありませんが、おそらく 'dmInfo'にあるデータモジュールに属している可能性があります。あなたのデータモジュールの名前が「DataModuleの」あるのであれば、たとえば、あなたはそれがすべての曖昧さを起こさない場合は、ユニット名を省略することができます

with dmInfo.DataModule do 

begin 

tblInfo.Open; 

を記述します。

with DataModule do 

さらに今はwithを避けて、わかりにくい問題から自分を守ってください。

DataModule.tblInfo.Open; 
+3

ニースキャッチ、+1ですが、これが問題の種類であることを指摘する機会を逃してしまうのは残念です。 – MartynA

+0

@Martyn - 少なくともこのコードはコンパイルされませんでした。 ありがとう! –

+0

私はこの問題が 'with'と直接関係しているとは思わない。ポスターはまだ 'dmInfo.tblInfo'としてテーブルを修飾しようとする可能性があります。 –

関連する問題