导航
  • 主页
  • 招聘
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
  • 问答

问几个非常简单的问题,多谢了!

wangxd 2004-01-24 02:20:19
1.在ide中我定义的字符串变量值太长,怎样换行?注意是在ide中。
var aa:string;
begin
aa:='dddddddddddddd
ddsd
dfdf'
end;
无效,怎么做?
2.前台delphi,后台sqlserver,用bde或ado连接,如何对数据库加锁(页锁,行锁)?
加完锁后如何解锁?
3.有一个表中就一条记录,记载的是当前使用的票据号码,每当打票据时就把这条记录的值+1,怎样避免多用户同时打印票据时,号码重号问题?应该加锁,但不知道怎么加?
4.tdatetime类型赋值时,我只能用以下方法赋值,觉得费劲,有简单办法否?
var
aa:tdatetime;
begin
aa:=strtodate('2004-01-24'); //要进行转换,有简单办法赋值否?
end;
...全文
8 点赞 收藏 16
写回复
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lywho 2004-01-31
2和3其实是为了解决票据重号问题吧。建议不要用那种方式,也就是说那个表和那个表中的那条唯一的记录没有存在的必要,因为数据库早就为你提供了解决方案!
可以用序列(sequnce)的方式来解决。序列可以在数据库中直接建立,你可以设置初始值、最大值、最小值等等,而在调用号段时,就可以用"select 序列名.nextval as id from dual "直接在序列中取,这样可以保证不重号。

注1:序列可以看成是一个表,每当你查询一次序列,就会触发一个动作,序列中的值永久性加1;
注2:这样做的机制是当一个客户端需要一个唯一的号码时,他就到数据库的序列中要一个号码,
数据库在给出号码的同时会在号码上加1,这样就不怕重号了。

满意吗?


回复
wangxd 2004-01-30
up
回复
lgqwelcome 2004-01-30
学习!
回复
wangxd 2004-01-29
请注意1问题中:“注意是在ide中”这句话
3问题:我担心如果同时有2个以上用户操作,就会取出同一个号码,打印时就会重复,所以我要求加锁,要求读、写这条记录时都要加排他锁。
我觉得我说得够明白了吧
回复
delphfan 2004-01-28
票据号问题,可以采用数据库的自增变量的思路解决.如ORACLE中
select operid.operid from dual
回复
jzx71722001 2004-01-28
aa:='ddd'+#10+'ddsd'+#10+....
回复
我不同意几位楼上的关于第1个问题的解法。
我觉得应该这样:
aa:='dddddddddddddd'+#13+'ddsd'+#13+'dfdf';
至于加锁和解锁,好像只能在后台数据库设置。
回复
wangxd 2004-01-28
3问题怎么解决啊?
回复
getit911 2004-01-26
2.前台delphi,后台sqlserver,用bde或ado连接,如何对数据库加锁(页锁,行锁)?
加完锁后如何解锁?
update table with (TABLOCK) set ....
可以确保每次只有一个用户更改,操作完毕后解锁,其他更复杂的看看sqlserver帮助
回复
wangxd 2004-01-26
up
回复
wangxd 2004-01-25
1.在bcb中加\就可以,但delphi不方便。
2.和3.其实是一个问题,就是避免多人操作时重号问题,难道这里没人做过c/s或b/s的吗?
4.对日期赋一个“指定”的初值,都可以怎样赋值?
回复
txmjs 2004-01-24
学习...
回复
lgqTiger 2004-01-24
啊啊 Sorry!
搂住,我漏了“ ;”的句末分隔符。
回复
lgqTiger 2004-01-24
在补充一下:
第一点俄可以这样:
=========================
var aa:string;
begin
aa:='dddddddddddddd'
... ...
aa:=aa+'ddsd'
... ...
aa:=aa+'dfdf';
end;
===============================
最终的效果一样,同时,更灵活一些
回复
lgqTiger 2004-01-24
1.//抄楼上的
var aa:string;
begin
aa:='dddddddddddddd'
+'ddsd'
+ 'dfdf';
end;
2.
你要求的加锁效果要怎样的?
3.
既然你用的是分布式的程序可以考虑这样
DataSetProvider+ClientDataSet这样连接后台数据库
然后设置DataSetProvider的 属性就可以了
如果你要详细的,可以参考李维先生的《Delphi高效数据库程序设计》
的第六章第一节吧!
4.
如果你要将一字符型的数据赋给日期型,我看也只好这样!
同时,请你注意:'2004-01-24'中的‘-’要看你的系统设置而定,
有时要这样:'2004/01/24'才可以的啊!
回复
flyforlove 2004-01-24
var aa:string;
begin
aa:='dddddddddddddd'
+'ddsd'
+ 'dfdf';
end;
回复
发动态
发帖子
Delphi
创建于2007-08-02

4802

社区成员

Delphi 开发及应用
申请成为版主
社区公告
暂无公告