起步软件技术论坛-X3

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

【搞定】成批的插入数据???**

[复制链接]
 楼主| 发表于 2007-8-14 14:47:59 | 显示全部楼层

.

你看看我在oracle中的语句:

INSERT INTO DSMIS_CHECK_REGISTER

            SELECT CONCAT(DCR_JOB,'COPY1'),DCR_CCSNO,DCR_PROPOSER,sysdate ,

            DCR_START,DCR_END,DCR_PLACE,DCR_DEPT,DCR_OVER,DCR_CHECKTYPE,

            DCR_PERPHONE,DCR_SHIP,DCR_DRAWNO,DCR_CLASS,DCR_MTYPE,DCR_TYPE,

            DCR_AREA,DCR_LENGTH,DCR_TONN,DCR_SDEPT,DCR_STATE,DCR_ODATE,

            DCR_SUVEYOR,DCR_DWTON,DCR_DOCK,DCR_MEMO,DCR_WSDATE,DCR_DDATE,

            DCR_TDATE,DCR_FDATE,DCR_SDATE,DCR_FLAG,DCR_SHPRO,DCR_BJPRO

            FROM DSMIS_CHECK_REGISTER where

            dcr_applydate >= to_date('2007-9','yyyy-mm')

            and dcr_applydate <= to_date('2007-10','yyyy-mm');
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-14 14:48:57 | 显示全部楼层
在看看在程序中的代码:

SqlDialog:='INSERT INTO DSMIS_CHECK_REGISTER '
                                                             //当前日期
   +' SELECT CONCAT(DCR_JOB,''COPY''),DCR_CCSNO,DCR_PROPOSER,sysdate,'

   +'DCR_START,DCR_END,DCR_PLACE,DCR_DEPT,DCR_OVER,DCR_CHECKTYPE,'

   +'DCR_PERPHONE,DCR_SHIP,DCR_DRAWNO,DCR_CLASS,DCR_MTYPE,DCR_TYPE,'

   +'DCR_AREA,DCR_LENGTH,DCR_TONN,DCR_SDEPT,DCR_STATE,DCR_ODATE,'

   +'DCR_SUVEYOR,DCR_DWTON,DCR_DOCK,DCR_MEMO,DCR_WSDATE,DCR_DDATE,'

   +'DCR_TDATE,DCR_FDATE,DCR_SDATE,DCR_FLAG,DCR_SHPRO,DCR_BJPRO '

   +'FROM DSMIS_CHECK_REGISTER where '

  +'dcr_applydate>= to_date('''+sYear1+'-'+SysUtils.IntToStr(SysUtils.StrtoInt(sMonth1)-1)+''', ''yyyy-mm'') '

   +'and dcr_applydate < to_date('''+sYear1+'-'+sMonth1+''', ''yyyy-mm'')';

   Tsqldataset(DataSetBroker1.DataSet).SQLFilter:=SqlDialog;


   if not Tsqldataset(DataSetBroker1.DataSet).SqlFiltered then
   Tsqldataset(DataSetBroker1.DataSet).SQLFiltered:= True;

   if not DataSetBroker1.dataset.active then DataSetBroker1.dataset.active:=true;
回复 支持 反对

使用道具 举报

发表于 2007-8-14 15:08:40 | 显示全部楼层
debug出来SqlDialog变量的值拼出的字符串,然后加上select语句,去工具调试下问题原因在哪里!
回复 支持 反对

使用道具 举报

发表于 2007-8-14 15:13:06 | 显示全部楼层
Tsqldataset(DataSetBroker1.DataSet).SQLFilter:=SqlDialog;
   if not Tsqldataset(DataSetBroker1.DataSet).SqlFiltered then
   Tsqldataset(DataSetBroker1.DataSet).SQLFiltered:= True;
不知道楼主这几句是干嘛的?
你那个SQL不是需要拿来执行的吗?怎么这么用呢?
回复 支持 反对

使用道具 举报

发表于 2007-8-14 15:14:16 | 显示全部楼层
楼主,建议用一个TQuery
然后用它来执行你的SQL,最后你再去过滤
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-14 15:18:34 | 显示全部楼层

我也是从别的地方复制过来的,再说这种方法我也用了很长时间了,也没什么问题呀?
安你得意思怎么写?
回复 支持 反对

使用道具 举报

发表于 2007-8-14 15:29:59 | 显示全部楼层
汗,我刚看明白。你是要执行一个insert语句啊。楼主按照15楼方法做吧。。
回复 支持 反对

使用道具 举报

发表于 2007-8-14 15:35:08 | 显示全部楼层
楼主,平台中的SQLFilter是用来数据过滤的而不是用来执行SQL的,也就是说SQLFilter就是当作where条件的!你那么做肯定会报错!你那个错误可以在网上查一下,有很详细地介绍的!
回复 支持 反对

使用道具 举报

发表于 2007-8-14 15:39:04 | 显示全部楼层
参考代码如下:
var
  lQuery : TQuery;
begin
  lQuery := TQuery.Create(Self);
  try
    lQuery.ConnectionString := FConnectString;//连接数据库的字符串,比如'DATABASEURL=Biz:\PXYS_LX_\SJK.DATABASE'
    lQuery.CommandText := FSQL;//需要执行的sql语句
    lQuery.Execute;
   
    DataSetBroker1.dataset.active  := False;
    DataSetBroker1.dataset.active  := True;
    //再根据实际需要,去过滤自己需要的数据了,这儿采用到SQLFilter了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-14 15:49:50 | 显示全部楼层

好,我试试,一会回复
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-16 03:56 , Processed in 0.037067 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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