用SQL语句实现自动输入
所以本节我们要学习在不加载基础数据表的情况下,如何实现自动输入。
本节的例子可以参考CaseStudy目录下的文件:SQL与自动输入.Table。
该文件使用外部数据源作为基础数据表,数据源文件为:行政区域.mdb。
设计步骤
1、首先省市列的列表项目是固定的,所以我们在项目事件AfterOpenProject加入代码:
Dim
Dim dt
As
DataTable
cmd.ConnectionName = "行政区域"
cmd.CommandText = "SELECT
DISTINCT 省市 From {行政区域}"
dt = cmd.ExecuteReader
Tables("客户").Cols("省市").Combolist
= dt.GetComboListString("省市")
这样打开项目后,会从后台的行政区域表提取不重复的省市值作为客户表省市列的列表项目,尽管行政区域表并没有加载。
2、在客户表的PrepareEdit事件中加入代码:
If
If e.Col.Name =
"县市"
Then
Dim cmd
As
New SQLCommand
Dim dt
As
DataTable
cmd.ConnectionName =
"行政区域"
cmd.CommandText =
"SELECT DISTINCT 县市
From {行政区域} Where [省市] = '" & e.Row("省市")
& "'"
dt = cmd.ExecuteReader
e.Col.Combolist =
dt.GetComboListString("县市")
End
If
End
If
这样在编辑客户表的县市列之前,会从后台的行政区域表提取该省市的县市值,作为县市列的列表项目使用。
3、最后将客户表DataColChanged事件的代码设置为:
If
e.DataCol.Name = "省市" Orelse e.DataCol.Name = "县市" Then
这样一旦在客户表的某行输入省市和县市两列内容后,会从后台的行政区域表查找对应的行,如果找到,则将该行的区号和邮编写入客户表中,否则清除区号和邮编。