DELPHI如何简洁和高效的判断EDIT中输入的值类型?

需要根据用户输入的值进行不同的SQL查询,例如用户输入:123123那么查询语句的条件写为where序号=123123用户输入:测试那么查询语句的条件写为where用户名... 需要根据用户输入的值进行不同的SQL查询,例如用户输入:123123 那么查询语句的条件写为where 序号=123123 用户输入:测试 那么查询语句的条件写为where 用户名='测试' 用户输入:2009-12-01 那么查询语句的条件写为where 日期='2009-12-1' 等等。。。。。主要区别在于条件后是否将用户输入的值用引号引起来。怎么写代码会简洁些,而且执行效率高些呢?找了找发现以下这种方法相对简洁,但是遇到日期型等就只能一直TRY下去了。有更好的方法么?function isInt(val: String): Boolean;
begin
try
strtoint(val);
result := true;
execpt
result := false;
end;
end;
展开
 我来答
匿名用户
2013-07-15
展开全部
在选择表的时候就把表中字段类型取出来,选择字段的时候将类型给 EDIT ,Edit输入的时候就按照不同类型给予不同的输入方式select syscolumns.name as 字段名,systypes.name as 类型,syscolumns.length as 长度 from syscolumns inner join systypes on syscolumns.xtype=systypes.xtype where id=object_id('表名')
匿名用户
2013-07-15
展开全部
这个方法不好,不科学,如果非要这样写的话,这个函数也不太好,用这个吧function CheckString(val: String): String;
var i:integer;
DT:TDateTime;
begin
Result:='';
if(tryStrtoint(val,i))then
begin
Result:='序号=' + val;
end;
if(tryStrtoDateTime(val,DT))then
begin
if(Result='')then
begin
Result:='日期=''' + val + '''';
end
else
begin
Result:=Result + ' or 日期=''' + val + '''';
end;
end;
if(Result='')then
begin
Result:='用户名=''' + val + '''';
end
else
begin
Result:=Result + ' or 用户名=''' + val + '''';
end;
end;调用showmessage('select * from where ' + CheckString('123'));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-15
展开全部
建议 where 序号='+edit.text+' or 用户名='''+edit.text+''' or 日期='''+edit.text+'''
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-15
展开全部
可能很难完善,假如有人使用纯数字的用户名呢,你就把他当序号来查询了.我建议你还是规定一个输入语法,比如操作者打算按序号查找,那麻烦在序号前加个x,如果是名字,前面加个m,日期就加r等等,程序判断输入的首个字母然后决定怎么处理.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式