起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: sydneyyue

【结帖】通过数据集更新的sql语句中,where语句部分主键丢失**

[复制链接]
发表于 2008-6-13 18:11:17 | 显示全部楼层
试试用主键作条件更新,不要加修改的字段了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-15 21:33:34 | 显示全部楼层
用主键作条件更新的话。使用这些有问题的表,作保存操作时,会提示“错误的sql语句结尾”。错误信息中,where语句后没有任何sql代码。

在程序运行后,作保存操作时的更新的sq;数据如何查看呢?  为什么选择主键作更新条件,where语句中会没有主键呢?  我查了很多资料,但没有可以用的。
回复 支持 反对

使用道具 举报

发表于 2008-6-16 08:41:52 | 显示全部楼层
是否该数据集使用的表没有定义主键。

楼主直接编写更新的sql语句吧。这样就能按照你的意愿来更新数据了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 08:56:35 | 显示全部楼层
主键是定义了的。
有直接编写更新的sql语句的例子吗,这个数据集所指向的表的动态的,即可以指向table1 也可以指向table2
回复 支持 反对

使用道具 举报

发表于 2008-6-16 09:07:39 | 显示全部楼层
最初由 sydneyyue 发布
[B]主键是定义了的。
有直接编写更新的sql语句的例子吗,这个数据集所指向的表的动态的,即可以指向table1 也可以指向table2 [/B]


数据集所指向的表的动态的,即可以指向table1 也可以指向table2 :楼主是怎么作的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 09:11:39 | 显示全部楼层
在代码中,动态的为数据集的table属性赋值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 09:18:33 | 显示全部楼层
主要是为数据集代理的sql赋值
dataset1.sql:='select * from table1 ';
dataset1.sql:='select * from table2 ';
回复 支持 反对

使用道具 举报

发表于 2008-6-16 09:18:45 | 显示全部楼层
给我看看你的代码吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 09:23:01 | 显示全部楼层
好的,我是网吧上网。公司上不了外网。等下吧,我把代码拷出来。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 10:21:46 | 显示全部楼层
if tvwQJ.Selected.Level>1 then
  begin
    with query2 do
    begin
      close;
      CommandText:='select ename,sorder from bd_p_fields where tabname='''+SysUtils.LowerCase(ordername)+''' and (fieldpage='''+sPageShowNum+''' or ename in (''sid'',''sfid'')) order by sorder';
      query2.Filtered:=true;
      open;
      first;
      while not eof do
      begin
        orderstr:=orderstr+','+FieldByName('ename').AsString;
        next;
      end;
    end;
  end;
  if orderstr<>'' then
  begin
    pagesql:=ssql;
    ssql:='select '+StringUtils.copy(orderstr,(StringUtils.Pos(',',orderstr)+1),9999)+'  '+StringUtils.copy(pagesql,(StringUtils.Pos('*',pagesql)+1),999);
  end;


  //为数据集赋SQL,并显示某一具体记录
  with TSQLDataSet(DataSetBroker1.DataSet) do
  begin
    DataGrid1.DataSource:=nil;
    Close;
    sql.Clear;
    SQL.Text:=ssql;
    DataSetBroker1.DataSet.Filtered:=true;
    DataGrid1.DataSource:=DataSetBroker1;
    open;
  end;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-19 07:24 , Processed in 0.037934 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表