|
|
导航: |
论坛 -> 数据库专区
斑竹:liumazi,waterstone |
|
作者: |
|
2004/4/18 23:58:01 |
标题: |
|
加入我的收藏 |
楼主: |
我用delphi编一个平台,其中利用sql查询用desktop建的数据表,程序如下: procedure TForm1.suiButton7Click(Sender: TObject); begin Unit1.Form1.query1.close; Unit1.Form1.query1.sql.clear; Unit1.Form1.query1.SQL.add('select * from 主表.db where'+' '+ '电话='+suiComboBox1.text); Unit1.Form1.query1.open; end; 问题出来了:我的数据表中含一个‘电话’的字段其中有电话13333333333和5555555两个号码,当我查13333333333(11位)时没有问题,而查5555555(七位)则出现错误:type mismatch in expression;我做了实验:当我查超过和等于电话字段中位数为最大的号码时没有错误(本表中为11位)只要少于最大位数(本表中为11位)则会有这个错误请问这是怎么回事??谢谢!
----------------------------------------------
- |
作者: |
|
2004/4/19 9:49:20 |
1楼: |
Unit1.Form1.query1.SQL.add('select * from 主表.db where 电话='+#13+suiComboBox1.text+#13);
类型问题,用这个试试.
----------------------------------------------
-
|
作者: |
|
2004/4/19 10:16:08 |
2楼: |
如果“电话”字段的类型是字符,应该写成这样吧: Unit1.Form1.query1.SQL.add('select * from 主表.db where 电话='''+suiComboBox1.text+'''');
----------------------------------------------
-
|
作者: |
|
2004/4/20 0:22:22 |
3楼: |
谢谢1楼和2楼,2楼的方法解决了问题,我是菜鸟那连续的三个单引号和四个单引号我看不太懂,对于那三个单引号是不是第一个和第三个匹配表示第二个单引号为字符串,然后第二个单引号和select前的那个表示中间的为一个串,还是和后四个单引号发生关系???这些引号是怎么匹配的呀?
----------------------------------------------
-
|
作者: |
|
2004/4/20 5:42:02 |
4楼: |
取决于引号内的数据类型,像电话='''+suiComboBox1.text+''''的数据是文本类型,因为在SQL中文本类型数据要加上双引号,比如"数据",数值类型数据不需要用引号,比如重量=50之类,而电话='''+suiComboBox1.text+''''右边的第四个是与select前面的那个单引号配对.
----------------------------------------------
-
|
作者: |
|
2004/4/20 11:56:19 |
5楼: |
{ Unit1.Form1.query1.SQL.add('select * from 主表.db where 电话='+#13+suiComboBox1.text+#13);}
不好意思,我写错了,应该是这样的:
Unit1.Form1.query1.SQL.add('select * from 主表.db where 电话='+#39+suiComboBox1.text+#39);
----------------------------------------------
-
|
作者: |
|
2004/4/20 14:04:46 |
6楼: |
谢谢大家的帮忙1楼的也能解决问题了,谢谢
----------------------------------------------
-
|
|