查询数据时,只能查询到部分字段。郁闷中……在线等~~~~~~~~~~~~~

windeflower 2003-12-23 10:19:49
谁遇到过在对一个表查询时,有些字段的值不在查询结果中
例如:
表:学生
学号 姓名 年龄 籍贯
10001 王 21 大连
10002 李 23 沈阳

SQL语句:
STRSQL="SELECT * FROM 学生 WHERE 学号='"10001"'"
SET RS=CON.EXECUTE(STRSQL)
结果
学号 姓名 年龄 籍贯
10001 王

即 RS!年龄和RS!籍贯没有值
哪位大虾见过类似问题?
...全文
9 点赞 收藏 17
写回复
17 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
windeflower 2003-12-24
我真的没招了!
可能是老天捉弄我吧
回复
windeflower 2003-12-23
是不是我的SQL SERVER2000有问题啊
有的时候查询后RS.FIELDSCOUNT竟然等于-1
而查询分析器中同样的语句能得出好多记录,应该是大于0的
这都是什么原因啊,是不是VB中运行SQL经常会得到这样的结果啊
回复
windeflower 2003-12-23
For Each fld In rs.Fields
Debug.Print "'" & fld.Name & "': " & fld.value
Next fld
是在If Not rs.EOF Then 上边插入的
可是运行时就差“合同内容”在窗体上不显示了
也就是说 rs!合同内容 是没有值的 且不为""
回复
windeflower 2003-12-23
'合同编号': 0001
'合同名称': 和平广场地下通道建设合同
'合同类别': 房屋出售
'收付类型': 收款
'签订日期': 2003-01-01
'工程': 和平广场地下通道建设工程
'合同总额': 500
'生效日期': 2003-04-01
'终止日期':
'终止原因':
'合同内容': 321321
'我方单位': 工程部
'对方单位': 12321
'对方地址': 21312
'对方电话': 21321
'其他方单位': 21312
'其他方地址': 21312
'其他方电话': 21321
'执行状态': 未执行
'审核':
'门牌号': 12121212
'房屋面积': 150
'单价': 6000

能显示出结果了,不过还差一个“合同内容”没有结果
回复
馮強 2003-12-23
是不是Grid的列数定义太少了。
回复
windeflower 2003-12-23
大哥!不好意思,偶是学俄语的,这样写数据库方便些,以后努力了
上边说的学生表是个举例!具体代码是上边那个关于合同的
rs.fields(0),rs.fields(1).....这种方法已经试过
回复
victorycyz 2003-12-23
请把下面的语句的执行结果贴上来看看:

dim fld as field

for each fld in rs.fields
print "'" & fld.name & "': " & fld.value
next
回复
nik_Amis 2003-12-23
up
回复
windeflower 2003-12-23
从“我方单位”一直到“合同内容”都没有值
回复
guoyx 2003-12-23
你的语句,没问题呀。如果你是使用Access,当你使用引擎不匹配时,使用中文是出错的,所以建议使用rs.fields(0),rs.fields(1).....
回复
yaya1979 2003-12-23
首先建议你不要用中文写表名以及字段名,第一容易出错,第二应该养成一个良好的编程风格以及习惯。
然后看一下你的10001那儿的符号有没有错误,在SQL中试了你的语句,SELECT * FROM 学生 WHERE (学号 = '10001 ') 答案正确
回复
windeflower 2003-12-23
With frmCon
grd.Col = 1
ConNo = Replace(Trim(grd.Text), "'", "''") '获得合同编号
strsql = "select * from 合同 where 合同编号='" & ConNo & "'"
Set rs = con.Execute(strsql)
If Not rs.EOF Then
.txtConNo.Text = rs!合同编号
.cboConType.Text = rs!合同类别
.cboRP.Text = rs!收付类型
.txtConName.Text = rs!合同名称
.txtTotalAmount.Text = rs!合同总额
.cboState.Text = rs!执行状态
.txtSignDate.Text = rs!签订日期
.txtProName.Text = rs!工程
.txtValDate.Text = rs!生效日期
.cboMyName.Text = rs!我方单位
.txtYiName.Text = rs!对方单位
.txtYiAddress.Text = rs!对方地址
.txtYiTel.Text = rs!对方电话
.txtSanName.Text = rs!其他方单位
.txtSanAddress.Text = rs!其他方地址
.txtSanTel.Text = rs!其他方电话
.txtContent.Text = rs!合同内容
.txtDoorNo.Text = rs!门牌号
.txtAcreage.Text = rs!房屋面积
.txtUPrice.Text = rs!单价
.txtEndDate.Text = rs!终止日期
.txtEndCausation.Text = rs!终止原因
End If
End With
回复
windeflower 2003-12-23
我把SQL语句在查询分析器中调用过了,也是正确的
我也使用过多种方法表示字段都没可以
如:
RS.FIELDS()
RS.学号
RS("学号")
rs()
回复
windeflower 2003-12-23
没值啊,所以郁闷
我用
WHILE I=0 TO 3
DEBUG.PRINT RS.FIELDS(I)
NEXT I
不知为什么却会打印出想要的正确结果
回复
landongfang 2003-12-23
不要在表名,字段名使用中文
容易出错
回复
jhzhou882 2003-12-23
rs里就两列吗?不会吧
objRs(0).value
objRs(1).value
objRs(2).value
objRs(3).value
看看有值没
回复
jone999 2003-12-23
这个问题真的很奇怪,重装VB或到别的机子试试
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告