|
本帖最后由 AntoniaQiao 于 2015-6-17 16:33 编辑
sql 中的表pricelist的结构为六列:pri_id(主键) ,pri_body, pri_gcyl , pri_fmkj, pri_price;
pri_body(对应excel的B列), pri_gcyl (对应excel的C列), pri_fmkj(对应excel的D列)。
根据excel表格中 B ,C, D 中的内容查询pricelist表的pri_price,并将查询到的内容写入E列。
求高手指导。
Sub test() '定义过程名称
Dim i As Integer, j As Integer, sht As Worksheet 'i,j为整数变量;sht 为excel工作表对象变量,指向某一工作表
Dim cn As New ADODB.Connection '定义数据链接对象 ,保存连接数据库信息;请先添加ADO引用
Dim rs As New ADODB.Recordset '定义记录集对象,保存数据表
Dim strCn As String, strSQL As String '字符串变量
strCn = "Provider=sqloledb;Server=QIAOCY;Database=price;Uid=sa;Pwd=sa;" '定义数据库连接字符串
'下面的语句将读取数据表数据,并将它保存到excel工作表中:画两张表想像一下,工作表为一张两维表,记录集也是一张两维表
cn.Open strCn '与数据库建立连接,如果成功,返回连接对象cn
rs.Open strSQL, cn '执行strSQL所含的SQL命令,结果保存在rs记录集对象中
Set sht = ThisWorkbook.Worksheets("sheet1") '把sht指向当前工作簿的sheet1工作表
i = 1
Do While Not rs.EOF
strSQL = "select pri_price from pricelist where pri_body==sht.Cells(i,2) pri_gcyl==sht.Cells(i,3) pri_fmkj==sht.Cells(i,4)" '定义SQL查询命令字符串
rs.MOVENEXT
i = i + 1
Loop
i = 1
Do While Not rs.EOF '当数据指针未移到记录集末尾时,循环下列操作
sht.Cells(i, 5) = rs(pri_price) '把当前记录的字段1的值保存到sheet1工作表的第i行第5列
rs.MOVENEXT '把指针移向下一条记录
i = i + 1 'i加1,准备把下一记录相关字段的值保存到工作表的下一行
Loop '循环
rs.Close '关闭记录集,至此,程序将把某数据表的pri_price保存在excel工作表sheet1的第5列,行数等于数据表的记录数
cn.Close '关闭数据库链接,释放资源
End Sub
|
|