Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1678|回复: 6

[已解决]麻烦帮忙补充下程序

[复制链接]
发表于 2013-6-23 22:18 | 显示全部楼层 |阅读模式
有如下代码,麻烦帮忙补充下,有注释的地方是不知道怎么写的,谢谢各位了!
  1. Public Sub ceshi2(ByVal data_h, ByVal scene_type, ByVal scene_name)
  2. Worksheets("测试数据").Range("A3:J10000").ClearContents
  3. Set conn = CreateObject("ADODB.Connection")
  4. Set rsOra = CreateObject("ADODB.Recordset")
  5. conn.Open "dsn=excel files;dbq=" & ThisWorkbook.FullName
  6. Sql = "select  场景类型,'" & scene_name & "'," & data_h & ",指标ID, 指标名称,指标类型,'','',指标来源表1,指标来源表2,指标来源表3,指标来源表4,指标算法 from [字典数据$a:m] where 场景类型='" & scene_type & "' "
  7. Sheets("测试数据").[A3].CopyFromRecordset conn.Execute(Sql)
  8. conn.Close: Set conn = Nothing
  9. j=3
  10.         source_table1 = Worksheets("测试数据").Cells(j, 9)
  11.         source_table2 = Worksheets("测试数据").Cells(j, 10)
  12.         source_table3 = Worksheets("测试数据").Cells(j, 11)
  13.         source_table4 = Worksheets("测试数据").Cells(j, 12)
  14.         algorithm = Worksheets("测试数据").Cells(j, 13)
  15.         
  16.         If source_table1 = """" Then
  17.         
  18.         '在Worksheets("测试数据").Cells(j, 7) 填入  此指标无算法
  19.         
  20.         ElseIf source_table2 = """" Then
  21.         sqlcou = "…………"
  22.         
  23.         ElseIf source_table3 = """" Then
  24.         sqlcou = "……………… "
  25.         
  26.         ElseIf source_table4 = """" Then
  27.        sqlcou = "……………… "
  28.         Else
  29.        sqlcou = "……………… "
  30.           'rsOra2.Open sqlcou 执行上面的sql
  31.          'value_s = rsOra的结果 ,此结果是多个字段,多行数据,写到cells(j,7)这一个单元格里
  32.       'Worksheets("测试数据").Cells(j, 7) = value_s
  33.         End If
  34.         'j从第三行开始,一直到最后一行
  35.         
  36. End Sub
复制代码
最佳答案
2013-6-23 23:46
你这样代码没法想你的目的,只有猜
  1. Public Sub ceshi2(ByVal data_h, ByVal scene_type, ByVal scene_name)
  2.     Worksheets("测试数据").Range("A3:J10000").ClearContents
  3.     Set conn = CreateObject("ADODB.Connection")
  4.     Set rsOra = CreateObject("ADODB.Recordset")
  5.     conn.Open "dsn=excel files;dbq=" & ThisWorkbook.FullName
  6.     Sql = "select  场景类型,'" & scene_name & "'," & data_h & ",指标ID, 指标名称,指标类型,'','',指标来源表1,指标来源表2,指标来源表3,指标来源表4,指标算法 from [字典数据$a:m] where 场景类型='" & scene_type & "' "
  7.     Sheets("测试数据").[A3].CopyFromRecordset conn.Execute(Sql)
  8.     conn.Close: Set conn = Nothing
  9.     '上面关闭了连接,下面是否有地方重新打开连接了?
  10.     j = 3
  11.       'j从第三行开始,一直到最后一行
  12.       'A列最后的数据所在行
  13.     Do While j <= Cells(Rows.Count, 1).End(xlUp).Row
  14.         source_table1 = Worksheets("测试数据").Cells(j, 9)
  15.         source_table2 = Worksheets("测试数据").Cells(j, 10)
  16.         source_table3 = Worksheets("测试数据").Cells(j, 11)
  17.         source_table4 = Worksheets("测试数据").Cells(j, 12)
  18.         algorithm = Worksheets("测试数据").Cells(j, 13)

  19.         If source_table1 = """" Then

  20.             '在Worksheets("测试数据").Cells(j, 7) 填入  此指标无算法

  21.         ElseIf source_table2 = """" Then
  22.             sqlcou = "…………"

  23.         ElseIf source_table3 = """" Then
  24.             sqlcou = "……………… "

  25.         ElseIf source_table4 = """" Then
  26.             sqlcou = "……………… "
  27.         Else
  28.             sqlcou = "……………… "
  29.             rsora2.Open sqlcou, conn    '执行上面的sql
  30.             Worksheets("测试数据").Cells(j, 7).CopyFromRecordset rsora2
  31.             'value_s = rsOra的结果 ,此结果是多个字段,多行数据,写到cells(j,7)这一个单元格里
  32.             'Worksheets("测试数据").Cells(j, 7) = value_s
  33.         End If
  34.         j = j + 1
  35.     Loop
  36. End Sub
复制代码
发表于 2013-6-23 23:08 | 显示全部楼层
  1. Public Sub ceshi2(ByVal data_h, ByVal scene_type, ByVal scene_name)
  2.     Worksheets("测试数据").Range("A3:J10000").ClearContents
  3.     Set conn = CreateObject("ADODB.Connection")
  4.     Set rsOra = CreateObject("ADODB.Recordset")
  5.     conn.Open "dsn=excel files;dbq=" & ThisWorkbook.FullName
  6.     Sql = "select  场景类型,'" & scene_name & "'," & data_h & ",指标ID, 指标名称,指标类型,'','',指标来源表1,指标来源表2,指标来源表3,指标来源表4,指标算法 from [字典数据$a:m] where 场景类型='" & scene_type & "' "
  7.     Sheets("测试数据").[A3].CopyFromRecordset conn.Execute(Sql)
  8.     conn.Close: Set conn = Nothing
  9.     j = 3
  10.     source_table1 = Worksheets("测试数据").Cells(j, 9)
  11.     source_table2 = Worksheets("测试数据").Cells(j, 10)
  12.     source_table3 = Worksheets("测试数据").Cells(j, 11)
  13.     source_table4 = Worksheets("测试数据").Cells(j, 12)
  14.     algorithm = Worksheets("测试数据").Cells(j, 13)

  15.     If source_table1 = """" Then

  16.         '在Worksheets("测试数据").Cells(j, 7) 填入  此指标无算法

  17.     ElseIf source_table2 = """" Then
  18.         sqlcou = "…………"

  19.     ElseIf source_table3 = """" Then
  20.         sqlcou = "……………… "

  21.     ElseIf source_table4 = """" Then
  22.         sqlcou = "……………… "
  23.     Else
  24.         sqlcou = "……………… "
  25.         rsora2.Open sqlcou, conn '执行上面的sql
  26.         Cells(j, 7).CopyFromRecordset rsora2
  27.         
  28.         'value_s = rsOra的结果 ,此结果是多个字段,多行数据,写到cells(j,7)这一个单元格里
  29.         'Worksheets("测试数据").Cells(j, 7) = value_s
  30.     End If
  31.     'j从第三行开始,一直到最后一行

  32. End Sub
复制代码
回复

使用道具 举报

发表于 2013-6-23 23:08 | 显示全部楼层
最好多测下,调试下。
好像是连接ORACLE数据库的吧。

回复

使用道具 举报

发表于 2013-6-23 23:09 | 显示全部楼层
  1.         rsora2.Open sqlcou, conn '执行上面的sql
  2.         If Not rsora2.EOF Then Cells(j, 7).CopyFromRecordset rsora2
复制代码
这样吧,避免查不到数据的情况。
回复

使用道具 举报

 楼主| 发表于 2013-6-23 23:24 | 显示全部楼层
hwc2ycy 发表于 2013-6-23 23:09
这样吧,避免查不到数据的情况。

'在Worksheets("测试数据").Cells(j, 7) 填入  此指标无算法
这个怎么写呢?还有就是j行的循环读取?是用while……wend么?麻烦帮忙写下,谢谢
回复

使用道具 举报

发表于 2013-6-23 23:46 | 显示全部楼层    本楼为最佳答案   
你这样代码没法想你的目的,只有猜
  1. Public Sub ceshi2(ByVal data_h, ByVal scene_type, ByVal scene_name)
  2.     Worksheets("测试数据").Range("A3:J10000").ClearContents
  3.     Set conn = CreateObject("ADODB.Connection")
  4.     Set rsOra = CreateObject("ADODB.Recordset")
  5.     conn.Open "dsn=excel files;dbq=" & ThisWorkbook.FullName
  6.     Sql = "select  场景类型,'" & scene_name & "'," & data_h & ",指标ID, 指标名称,指标类型,'','',指标来源表1,指标来源表2,指标来源表3,指标来源表4,指标算法 from [字典数据$a:m] where 场景类型='" & scene_type & "' "
  7.     Sheets("测试数据").[A3].CopyFromRecordset conn.Execute(Sql)
  8.     conn.Close: Set conn = Nothing
  9.     '上面关闭了连接,下面是否有地方重新打开连接了?
  10.     j = 3
  11.       'j从第三行开始,一直到最后一行
  12.       'A列最后的数据所在行
  13.     Do While j <= Cells(Rows.Count, 1).End(xlUp).Row
  14.         source_table1 = Worksheets("测试数据").Cells(j, 9)
  15.         source_table2 = Worksheets("测试数据").Cells(j, 10)
  16.         source_table3 = Worksheets("测试数据").Cells(j, 11)
  17.         source_table4 = Worksheets("测试数据").Cells(j, 12)
  18.         algorithm = Worksheets("测试数据").Cells(j, 13)

  19.         If source_table1 = """" Then

  20.             '在Worksheets("测试数据").Cells(j, 7) 填入  此指标无算法

  21.         ElseIf source_table2 = """" Then
  22.             sqlcou = "…………"

  23.         ElseIf source_table3 = """" Then
  24.             sqlcou = "……………… "

  25.         ElseIf source_table4 = """" Then
  26.             sqlcou = "……………… "
  27.         Else
  28.             sqlcou = "……………… "
  29.             rsora2.Open sqlcou, conn    '执行上面的sql
  30.             Worksheets("测试数据").Cells(j, 7).CopyFromRecordset rsora2
  31.             'value_s = rsOra的结果 ,此结果是多个字段,多行数据,写到cells(j,7)这一个单元格里
  32.             'Worksheets("测试数据").Cells(j, 7) = value_s
  33.         End If
  34.         j = j + 1
  35.     Loop
  36. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-6-23 23:57 | 显示全部楼层
hwc2ycy 发表于 2013-6-23 23:46
你这样代码没法想你的目的,只有猜

非常感谢呢,明天上班了我再测试下,现在没有实际数据库,有些内容还测试不了,辛苦了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 21:51 , Processed in 0.326011 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表