Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 为什么代码编辑器看不到数据模块中定义的对象_Delphi_Ide - Fatal编程技术网

Delphi 为什么代码编辑器看不到数据模块中定义的对象

Delphi 为什么代码编辑器看不到数据模块中定义的对象,delphi,ide,Delphi,Ide,使用Delphi的社区版本,我在datamodule(DataMod)中定义了一个数据库,并且在datamodule中定义了dataset form401ds。很明显,我在主单元中还定义了DataMod的USES语句。我在DataMod中还定义了一个TIBSQL(IBSQL1)。我试图用下面的代码以编程方式定义该数据集。斜体代码由代码编辑器用红色下划线标记。此外,如果我键入DataMod。在代码编辑器中,我没有得到DataMod中定义的对象列表。为什么不呢?我做错了什么 var sqltext,

使用Delphi的社区版本,我在datamodule(DataMod)中定义了一个数据库,并且在datamodule中定义了dataset form401ds。很明显,我在主单元中还定义了DataMod的USES语句。我在DataMod中还定义了一个TIBSQL(IBSQL1)。我试图用下面的代码以编程方式定义该数据集。斜体代码由代码编辑器用红色下划线标记。此外,如果我键入DataMod。在代码编辑器中,我没有得到DataMod中定义的对象列表。为什么不呢?我做错了什么

var sqltext,
listboxtext,
primaryindivtext,
title    :  string;
queryeof : boolean;
begin
sqltext := 'drop table ';
sqltext := sqltext+'form401ds;';
sqltext := sqltext+'create table form401ds (';
sqltext := sqltext+'sourcelistno integer,';
sqltext := sqltext+'sourceassociation integer,';
sqltext := sqltext+'sourceseqno integer,';
sqltext := sqltext+'sourceid varchar(20),';
sqltext := sqltext+'id varchar(20),';
sqltext := sqltext+'title varchar(40),';
sqltext := sqltext+'primaryindiv varchar(40) );';
DataMod.*IBSQL1.SQL.text* := sqltext;
DataMod.*IBSQL1.ExecSQL*;

对于已经是项目一部分的单元,在代码中引用它们,然后执行生成将提示您是否希望将该单元添加到uses子句中。正在尝试使用项目中的Unit2构建以下代码:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Unit2.
end;
获取一个对话框:

回答“是”,将更新“实施”部分,以包括以下单元:

implementation

{$R *.dfm}

uses Unit2;
代码完成现在将适用于其他单元中定义的内容

我在datamodule(
DataMod
)中定义了一个数据库 我显然还有一个
USES
语句,用于主单元中定义的
DataMod

看起来您正在混合单元名称和数据模块名称。您的描述提示单位名称为

unit DataMod;
如果是这种情况,那么数据模块类不能是
TDataMod
(实例不能是
DataMod

数据模块类的名称可能是
TDataModule2
。然后接口部分将如下所示:

unit DataMod;

interface

uses
  System.SysUtils, System.Classes, IBX.IBSQL;

type
  TDataModule2 = class(TDataModule)
    IBSQL1: TIBSQL;
  private
  public
  end;
然后该实例将被声明为:

var
  DataModule2: TDataModule2;
最后,要解决表单单元中的
TIBSQL
,您需要

将单元名称添加到表单单元的
实现
部分的
使用
子句中:

uses DataMod;
请参阅
TIBSQL
实例,如下所示

DataModule2.IBSQL1.SQL.text := '...';

欢迎来到堆栈溢出!如果我理解的很好,你的问题是看到红色的曲线。好的,但是代码编译正确吗?如果没有,编译器问题的确切错误消息是什么,在哪一行?请显示您的代码,不要只描述它。例如,您的对象是如何声明的,
private
public
等?在方法/过程等中键入单元名称,然后进行构建-它应该询问如何将单元/数据模块添加到uses子句中。回答是,代码完成现在应该可以工作了。UnitUses引用将添加到
实现
下。我的项目中的datamodule称为DATAMOD,因此DATAMOD出现在我的uses语句中。但是,该datamodule的NAME属性是DATAMODULE1。当我使用DATAMODULE1作为引用对象的第一个限定符时,红色下划线消失,代码完成正常。感谢所有对这个问题发表评论的人,你的评论促使我重新审视这个问题,从而破解它。