Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

数据有引号,在combobox里的Limit to List无法找到。

赵子龙  发表于:2017-06-22 16:26:39  
复制

在ADP中,有一个combobox,RowSource是从SQLServer里读取的。Select Code From jtblCodes

然后先顶了Limit to List =  Yes 也就是只能选List里面的。

但是~  Code里的数据大多数都是这样的:  WP0013"

在最后有一个双引号表示英寸的意思。

就是因为这个双引号,导致手填的WP0013"提示不在List里面,但是点下拉框,选择WP0013"却可以。


这个情况只出现在ADP当中,用ODBC Link到普通的mdb里却可以手填或者下拉框选择都没有问题。

有人遇到过吗?如何解决?

 

Top
赵子龙 发表于:2017-06-22 16:30:15
看到其他帖子的最后回复居然是好几年前,已经绝望了。

麥田 发表于:2017-06-22 16:34:37
adp微软从2013版开始已经不在支持    考虑用链接表读取SqlServer吧

赵子龙 发表于:2017-07-19 10:20:51

想要直接复制粘贴东西进去是不可能的了。不过可以通过NotinList事件,来修改List的RowSource,并设置Response=acDataErrAdded


当用户复制粘贴之后,触发NotinList事件,在事件中,修改RowSource,让其select用户新输入的数据,此时会自动弹出下拉框,让用户手动选择一下即可。

举例:

'在Open Form时,设置combox的RowSource,获得所有数据

Private Sub Form_Open(Cancel As Integer)

Me.MaterialCodeDesc.RowSource = "vwcboMaterialDesc"


End Sub

'当数据“不在List中”(本来应该在的,但是因为引号的问题,ADP识别不了,所以提示不在List里面),此时,修改RowSource,让其select你输入的数据,以减少下拉框候选数量,并设置Response=acDataErrContinue避免弹出警告消息。下拉框会自动弹出,里面只有较少数据可供选择。

Private Sub MaterialCodeDesc_NotInList(NewData As String, Response As Integer)
Response = acDataErrContinue
If NewData = "" Then
MaterialCodeDesc.RowSource = "SELECT MaterialCode, MaterialDescription FROM tblMaterial ORDER BY MaterialCode"
Else
MaterialCodeDesc.RowSource = "SELECT MaterialCode, MaterialDescription FROM tblMaterial where materialdescription like '%" & NewData & "%' ORDER BY MaterialCode"
End If
End Sub

'当失去焦点时,把RowSource设置回所有数据,这里用了个判断语句,可以避免重复连接数据库刷新Rowsource而造成缓慢。

Private Sub MaterialCodeDesc_LostFocus()
If MaterialCodeDesc.RowSource <> "vwcboMaterialDesc" Then
    MaterialCodeDesc.RowSource = "vwcboMaterialDesc"
End If
End Sub



总记录:3篇  页次:1/1 9 1 :