Command.CommandText = "select Playfile.FileName from Playfile where Playfile.PID IN(select Playlist.PID from Playlist where Playlist.Name1 = '" & TextBox1.Text & "')"这样说 表达式中的类型不匹配
可是我把 PID 后面的 IN 换成 “=” 后就可以了。如果要用“IN”应该怎么写呢?
为什么会这样子 大家说说见解 谢谢了 呵呵
解决方案 »
- VB制作出入库单,输入详细产品用什么控件好?
- EXcel中 怎么给单片机串口发指令发不下去
- 如何给一个表里的所有数据排序
- 一个有关系统托盘的问题
- 关于IE浏览器控件
- 用access得query按照要求排序生成一个table,不知为什么生成的table排序总是随机在变!!
- 急!哪里有局域网即时通讯的源码下载,在线等待!(高分相送)
- 用datareport打印的问题!
- 用VB做了一个系统,安装使用,总是出现类未注册的错误!十万火急,恳请高手指教!
- vb的数据报表(data report)如何支持分组报表分页打印
- Detours有人用过没?干啥用的?是不是像API浏览器一样?VB能用不?
- VB中如何实现一PC控制N台PC机呢?
试试
Select Playfile.FileName from Playfile where Playfile.PID IN (convert(int, select Playlist.PID from Playlist where Playlist.Name1 = '" & TextBox1.Text & "'))
两个表的 PID 类型设置为同一种类型了吗?
但用“=”是sql的引擎可以自动转换类型进行匹配,所以用“=”就是可以的
这只是个informix的例子。
Playfile:
PID Filename
456 qw
234 rt
234 fg
123 aaPlaylist:
PID Name1
123 qq
234 ss
还有你贴出来的代码有很大问题,如果select出两个结果,必定报错.明显楼主的需求会出现两个PID
试试下面这句,肯定报错.
select A = (CONVERT(INT,(SELECT a= '100' union SELECT a= '110')))楼主的是什么数据库 ACCESS/MS SQL/MYSQL/Oracle ... ...?
以下语句在MS-SQL 2000中通过. 表1的PID是 int,表2的PID是 CHAR(10),使用In是没有问题的.
IF OBJECT_ID('tempdb..#TMP') > 0 DROP TABLE #TMPCreate TABLE #TMP(ID int identity(1,1) ,PID int,FileName NCHAR(10))INSERT INTO #TMP Values(123,N'qw')
INSERT INTO #TMP Values(456,N'rt')
INSERT INTO #TMP Values(456,N'fg')
INSERT INTO #TMP Values(123,N'aa')
--INSERT INTO #TMP Values(123,NULL)IF OBJECT_ID('tempdb..#TMP1') > 0 DROP TABLE #TMP1
Create TABLE #TMP1(ID int identity(1,1) ,PID char(10) ,Name1 NCHAR(10))INSERT INTO #TMP1 Values(123,N'qq')
INSERT INTO #TMP1 Values(234,N'ss')
select #TMP.FileName from #TMP
where #TMP.PID IN(
select #TMP1.PID
from #TMP1
where #TMP1.Name1 = 'qq'
)
select A = (CONVERT(INT,(SELECT a= '100' union SELECT a= '110')))
我是MS ACCESS呵呵