delphi sql 拷贝数据表的问题

sjyx138 2012-03-27 10:53:22
拷贝sql server 的一个数据表的一个字段到内存表,同时添加一个逻辑字段的 ADOQuery.SQL.TEXT如何写?
...全文
318 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
somemak 2012-03-30
  • 打赏
  • 举报
回复
MySQL:
CREATE TEMPORARY TABLE IF NOT EXISTS tbl_test
SELECT field1,1 AS field2 FROM YourTable

忘记SQL SERVER是否有类似的语法,自己查下手册。
jonathanscor 2012-03-28
  • 打赏
  • 举报
回复
前台的dbgrideh控件中加一列为checkbox,value值为0和1,内存表中对应新增这个逻辑字段,数据类型为ftboolean,从后台查询带回来,同时对该字段赋值了
sjyx138 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jonathanscor 的回复:]
select field1, 1 as field2 from table
[/Quote]

不行,‘1 as field2’ 不能编辑
sjyx138 2012-03-27
  • 打赏
  • 举报
回复
感谢您对不厌其烦,但我认为一句SQL查询语句应该可以做到,当然我做不到
faunaq 2012-03-27
  • 打赏
  • 举报
回复
关于Delphi内存表的使用说明:

1.建立临时表
  数据输入是开发数据库程序的必然环节。在Client/Server结构中,客户端可能要输入一批数据后,再向服务器的后台数据库提交,这就需要在本地(客户端)建立临时数据表来存储用户输入的数据,待提交后,清除本地表数据。

2 建立临时表如下:

function CreateTableInMemory(const AFieldDefs:TFieldDefs):TDataSet; var
TempTable:TClientDataSet;
begin
  TempTable:=nil;
  Result:=nil;
  if AFieldDefs<>nil then
  begin
   try
  TempTable:=TClientDataSet.Create(Application);
   TempTable.FieldDefs.Assign(AFieldDefs);
   TempTable.CreateDataSet;
   Result:=(TempTable as TDataSet);
  Except
   if TempTable<>nil then
TempTable.Free;
  Result:=nil;
   raise;
  end;
end;
end;

//在程序中按如下方法使用:
procedure TForm1.Button1Click(Sender: TObject);
var
ADataSet:TDataSet;
 begin
   ADataSet:=TDataSet.Create(Self);
   with ADataSet.FieldDefs do
   begin
    Add('Name',ftString,30,False);
   Add('Value',ftInteger,0,False);
   end;

  with DataSource1 do
  begin
   DataSet:=CreateTableInMemory(ADataSet.FieldDefs);
   DataSet.Open;
end;

   ADataSet.Free;
end;

一、 Delphi使用内存表
1.1 Delphi创建内存表步骤:
1. 创建一个Ttable实例。
2. 设置一个DataBaseName为一个目录或是已有的数据库别名。
3. 指定TableName的值。
4. 设置TableType属性指明要创建的数据库表类型。(如果此属性为ttDefault表示数据库类型与TableName指定值的扩展名对应)。
5. 调用TTable.FidldDefs对象的Add方法向数据库表中添加字段。Add有4个参数:
 字段名:string。
 字段类型:TfieldType。
 字段大小:Word。一般只对String和Memo类型使用。
 字段是否NotNull: Boolean。
6. 使用TTable.IndexDefs.Add()方法定义索引。Add有三个参数:
 索引名:string;
 索引字段名:string;
 索引类型:TIndexOptions;
7. 调用TTable的CreateTable。这种方法适用于本地表。SQL表要用TQuery来创建。

代码如下:
var
MemTable: TTable;
begin
with MemTable.Create(Self) do
begin
DatabaseName := 'c:\Temp';
TableName := 'Test';
TableType := ttParadox;
with FieldDefs do
begin
Add('Age', ftInteger, 0, True);
Add('Name', ftString, 25, False);
Add('Weight', ftFloat, 0, False);
end;
IndexDefs.Add('', 'Age', [ixPrimary, ixUnique]);
CreateTable;
end;
end;
jonathanscor 2012-03-27
  • 打赏
  • 举报
回复
select field1, 1 as field2 from table

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧