ado.SQL.Clear;
ado.sql.text := 'select max(lsh) from d_wzclxx';
ado.open; //如果表中无数据,需要处理这种情况。 if strtodate(LeftStr(ado.fieldbyname('lsh').asstring,10)) <> date() 总是报错,说: ado:Field 'lsh' not found.
我的表d_wzclxx中明明有lsh这一项的啊。
ado.sql.text := 'select max(lsh) from d_wzclxx';
ado.open; //如果表中无数据,需要处理这种情况。 if strtodate(LeftStr(ado.fieldbyname('lsh').asstring,10)) <> date() 总是报错,说: ado:Field 'lsh' not found.
我的表d_wzclxx中明明有lsh这一项的啊。
解决方案 »
- 200分求数据库设计思想问题
- SQL中IMAGE类型数据
- 我想用代码让OFFICE打开一个文件比如说C:\abc.xls,应该怎么写呀?大虾快来帮我~~!
- 5个回复以后就不要来了,重复的不算哦:)
- 百度中搜索到的mp3地址一部分是无效的.请问如何检测某mp3地址是否有效?
- 请问有谁知道在Delphi中怎样作不可视的ActiveX控件呀
- 如何在ini文件中插入空行?(用TIniFile类)
- 请教如何使DBGRID的内容可修改?
- 请教动态生成表~~~~~~~~~~~急急,,,急
- 小弟想编一套公司管理软件 ,可是客户提出了像EXCEL里面的公式输入 ,小弟现在没有足够的时间写公式编译器了不知哪位大哥有现成的代码借给小弟参考以下
- 局域网中,C/S模式,建立了服务器程序,如何在客户端探测服务器程序呢?
- 关于ListView的
ado.SQL.Clear;
ado.sql.text := 'select max(lsh) maxdate from d_wzclxx';
ado.open; //如果表中无数据,需要处理这种情况。 if strtodate(LeftStr(ado.fieldbyname('maxdate').asstring,10)) <> date()
ado.open;
if strtodate(LeftStr(ado.fieldbyname('lsh').asstring,10)) <> date()
>>>第三行有毛病的 因为你选取的是最大的 并没有选取 lst 这个字段的所以ado.fieldbyname('lsh')错误
应该select max(lsh) as aa from d_wzclxx
if strtodate(LeftStr(ado.fieldbyname('aa').asstring,10)) <> date()
顺便再问个问题(不好意思,实在是没有分了)。
同一个函数:
procedure TForm1.ButtonInPutClick(Sender: TObject);
var
str : string; //用以存储生成的流水号;begin ado.SQL.Clear;
ado.sql.text := 'select max(lsh) as maxlsh from d_wzclxx ';
ado.open;
if strtodate(LeftStr(ado.fieldbyname('maxlsh').asstring,10)) <> date() then
begin
str := datetostr(date()) + '001';
end
else begin
str := rightstr(ado.fieldbyname('maxlsh').asstring,3);
str := inttostr(strtoint(str) + 1);
str := datetostr(date()) + str;
end; end;
运行就报错,说:''is not a valid integer value.
我查看了,最后中的str都是'',我数据库中有值的啊
如:lsh=‘2003-10-11951’,
这是怎么回事啊?
1、当运行str := inttostr(strtoint(str) + 1);结果可能不是3位数,例如原来是lsh=‘2003-10-11002’,那么运行后str='3';你要判断一下str,不够位数前面要补0。
例如for i := 2 to length(str) do str := '0'+str;2、你这个流水号在并行方面可能会出问题。如果有很多人同时执行取得流水号,他们取得的流水号是一样的,这样就不能保证流水号唯一。3、为什么str=''我现在还没看出来。
是啊,我忽略了第一种情况,这的确是个问题。
第二种情况,我也考虑到了,我想最终可能会通过事务或者触发器来解决,但目前还没有什么思路,先试一试这种方法(我虽然在做项目,但却是刚开始学)。能不能给出一个好的方法解决那?
strtodate(LeftStr(ado.fieldbyname('maxlsh').asstring,10)) <> date() 没有问题的,
我测试过的,让它显示在一个edit上得到正确的结果。
我想问题在后面。
p.s.
我用strtodate(LeftStr(ado.fields(0).asstring,10)) <> date()反而不行。
我在数据库中设置lsh字段是char(16),而流水号只用了13个char,sql server在后面自动补了空格,所以就出现了str=''的情况,呵呵,折腾了一下午。