首先数据库是sql server 2000,窗体form1,数据库表是齿轮,列名有齿数,变形系数,等现在想让输入的变量z,如果对应于数据库齿轮的齿数,然后返回相对应的变形系数给变量f。返回相对应的变形系数怎么弄啊?我是用的adodc控件,已连接上数据库。还有一个是数据库中齿数不可能每个数值都罗列出来,比如里面的齿数只有40,42,45,50,60,70,80,100,150,200如果想让输入的齿数z是46的话自动对应数据库里离它最近的45,那又该怎么办。菜鸟提问,大家莫笑哈
调试欢乐多
order by 排序
按照abs(column1-46)从小到大排序top 1选第一列解释得很清楚了
'--------------
Adodc.RecordSource = "select top 1 column1 from table_1 order by abs(column1-" & z & ")"
Adodc.Refresh 至于你的adodc连到哪那就是你决定了返回相应的变形系数
sql="select para from table_1 where column1=" & z
dim z as string
dim f as string
z=trim(text1.text)
Adodc1.ConnectionString = " Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=数据库名称;User ID=sa;password=;Data Source=SQL服务器名称"
Adodc1.RecordSource = "select top 1 column1 from [table_1] order by abs(column1-" & z & ")"
Adodc1.Refresh
f = Adodc1.Recordset.Fields("column1")
其实不如事先将齿数用 Combobox 或 Listbox 列出来,供用户选择,强似盲目输入后近似匹配。起码更快。Private Sub Form_Load()
Dim rs As New ADODB.RecordsetSet rs = Adodc1.Recordset.ActiveConnection.Execute("Select Distinct 齿数 From 齿轮 Order By 齿数")
Do Until rs.EOF
Combo1.AddItem rs!齿数
rs.MoveNext
Loop
If Combo1.ListCount Then Combo1.ListIndex = 0
set rs = Nothing
End Sub