救救我吧,为什么记录更新后看不到?(急急急!!!)(100分)

  • 主题发起人 主题发起人 hukaijt
  • 开始时间 开始时间
H

hukaijt

Unregistered / Unconfirmed
GUEST, unregistred user!
小生出学DELPHI,用的是DELPHI5.0企业版,编一个后台用SQL7(DESKTOP)的数据库,当加入一条记录后,看不见新加的记录。在窗体FRMMAIN上有QI(TQUERY),DATABASE1(TDATABASE),storedproc1(Tstoredproc)
我用的是QUERY控件,Q1的ACTIVE 为TRUE,CATHUPDATE为TRUE,保存添加的记录时调用存储过程dbo.sp_insert_基本信息表_1,
代码如下:
CREATE PROCEDURE [sp_insert_基本信息表_1]
(
@病理号_2 [char](10),
@病案号_3 [char](12),
@床号_4 [char](5),
@病理检验号_5 [char](20),
@住院号_6 [char](15),
@姓名_7 [char](8),
@病理诊断_16 [char](100))

AS INSERT INTO [bingli].[dbo].[基本信息表]
(
[病理号],
[病案号],
[床号],
[病理检验号],
[住院号],
[姓名],
[病理诊断])

VALUES
(
@病理号_2,
@病案号_3,
@床号_4,
@病理检验号_5,
@住院号_6,
@姓名_7,
@病理诊断_16)

在‘保存’的代码处写:

frmmain.database1.starttransaction;
try
frmmain.StoredProc1.Parambyname('@姓名_7').asstring:= frmmain.edit1.text;
...............
frmmain.StoredProc1.Parambyname('@病理诊断_16').asstring:= frmmain.edit13.text;
frmmain.storedproc1.ExecProc;
frmmain.q1.applyupdates;
frmmain.Database1.commit;
except
frmmain.Database1.rollback
end;
frmmain.t1.CommitUpdates;
执行后记录添加了,但看不到,只有从新运行才可以,我都试了两天了,还不行,
最后只好在frmmain.Database1.commit;后加上
frmmain.t1.Active:=false;
frmmain.t1.Active:=true;
但这不是长久之计,哪为大侠救命,还有修改记录时遇到的情况也一样,还有修改后如何跳到
刚改过的记录,承蒙相助,不胜感激,救命呀!!!



 
我也遇到过,也是这样解决的
 
只能这样刷新的
 
这样好慢呀!
 
难到只有这样?
 
我也有这样的问题,后来看见这里的一个叫 tb 的人有一个方法解决,放一个
datasetprovider,clientdataset(都在midas页),设置

datasetprovider1.dataset:=query1;
clientdataset1.provider:=datasetprovider1;(设置active为true)

datasource1.dataset:=clientdataset1;

我试过了,可以使用,添进的数据能看见了,非常感谢他,不过在update时用存储过程就
没试过,自己试试了.
 
用储存过程进行的更新好象只能这才能看到。
 
zhangwh的方法我试过,好象不行,谢谢大家,有社么好办法?
 
同意Victortim
大概你显示数据用的绑定方式吧?
那么干吗不直接Q1.append
 
后台调用存储过程,前台只能选用refresh更新。速度的确很慢,
建议用sql重新取数据
 
ppz_76,从新取数据是什么意思
 
兄弟:
在TQuery.IndexFieldNames中加入第一列(如:col1),
然后试试,如可行,别忘了给老弟加分.
 
在表上加一个主码试试。
 
crab:我的表上有主码“ID号”,自动加一的。

jqw:第一列是指什么,是不是”ID号“。

hsw,q:LISTEN是什么东东?
 
clientdataset1有RefreshRecord 属性。
 
我的作法是这样:用Insert into插入,然后查询
(相当于刷新,Query对刷新支持不好)。
用update 修改,然后查询本次修改记录。
我觉得这个方法还可以。
 
hukaijt:
e.g. 表1: field1,field2,field3,...(字段英文名)

第一列是指field1.
 
jqw:
TQuery中没有IndexFieldNames这个属性,怎么办,讲详细点!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
939
SUNSTONE的Delphi笔记
S
I
回复
0
查看
992
import
I
I
回复
0
查看
760
import
I
后退
顶部