奇怪,为什么我这样调用会出错?数据库有以下结构,假如有以下数据:
id   name1    name2   name3
100  va vb    vb vc   vc vd
..........................   Function FormatStr(String1)'将得到的字符串处理,去掉空格.
  On Error Resume Next
  String1 = Replace(String1, " ", "-")
  String1 = Replace(String1, "\", "-")
  String1 = Replace(String1, "*", "-")
  String1 = Replace(String1, "?", "-")
  String1 = Replace(String1, "<", "-")
  String1 = Replace(String1, ">", "-")
  String1 = Replace(String1, "|", "-")
  FormatStr = String1
End Function'返回叁数的结果
Sub urlclass(ByVal urlclass_nb, ByRef urla, ByRef urlb, ByRef urlc, ByRef urlname1, ByRef urlname2, ByRef urlname3)
urlclass_id = urlclass_nb
sqlc="select * from product where id=" & urlclass_id
rsc.Open sqlc, conn, 1, 1
urla = rsc("name1")
urlb = rsc("name2")
urlc = rsc("name3")
urlname1 = fromatstr(rsc("name1"))
urlname2 = fromatstr(rsc("name2"))
urlname3 = fromatstr(rsc("name3"))
rsc.Close
Set rsc = Nothing
'*************end url**************
End Sub'调用过程生成文件
Sub writetxt(ByVal outid)
newid=outid
Call classurl(newid, urla, urlb, urlc, urlname1, urlname2)'将得到的结果输出到文件
********
'省略掉
end if假如现在在按钮里面要调用
Private Sub Command1_Click()
Call writetxt(100)
end sub
因为已经声明处理过了.
urla = rsc("name1")
urlb = rsc("name2")
urlc = rsc("name3")
urlname1 = fromatstr(rsc("name1"))
urlname2 = fromatstr(rsc("name2"))
urlname3 = fromatstr(rsc("name3"))
原本我以为生出来的文件会有以下结果:
urla=va vb
urlb=vb vc
urlc=vc vd
urlname1=vavb
urlname2=vbvc
urlname3=vcvd
但是结果是:
urla=vavb
urlb=vbvc
urlc=vcvd
urlname1=vavb
urlname2=vbvc
urlname3=vcvd
我错在哪里了,请高手指点一下,谢谢..
在线等待.

解决方案 »

  1.   

    调用过程生成文件 
    Sub writetxt(ByVal outid) 
    newid=outid 
    Call classurl(newid, urla, urlb, urlc, urlname1, urlname2) '将得到的结果输出到文件 
    ******** 
    '省略掉 
    end if 
    这里是不是end if的,是 end sub的
      

  2.   

    谢谢..Function FormatStr(String1) '将得到的字符串处理,去掉空格. 
      On Error Resume Next 
      String1 = Replace(String1, " ", "-") 
      String1 = Replace(String1, "\", "-") 
      String1 = Replace(String1, "*", "-") 
      String1 = Replace(String1, "?", "-") 
      String1 = Replace(String1, " <", "-") 
      String1 = Replace(String1, " >", "-") 
      String1 = Replace(String1, " ¦", "-") 
      FormatStr = String1 
    End Function '返回叁数的结果 
    Sub urlclass(ByVal urlclass_nb, ByRef urla, ByRef urlb, ByRef urlc, ByRef urlname1, ByRef urlname2, ByRef urlname3) 
    urlclass_id = urlclass_nb 
    sqlc="select * from product where id=" & urlclass_id 
    rsc.Open sqlc, conn, 1, 1 
    urla = rsc("name1") 
    urlb = rsc("name2") 
    urlc = rsc("name3") 
    urlname1 = fromatstr(rsc("name1")) 
    urlname2 = fromatstr(rsc("name2")) 
    urlname3 = fromatstr(rsc("name3")) 
    rsc.Close 
    Set rsc = Nothing 
    '*************end url************** 
    End Sub '调用过程生成文件 
    Sub writetxt(ByVal outid) 
    newid=outid 
    Call classurl(newid, urla, urlb, urlc, urlname1, urlname2,urlname3) '将得到的结果输出到文件 ******** 这里的代码太多了,
    '但是调用这几个,我是赋过值的了
    'urla=urla,urlb=urlb,urlc=urlc,urlname1=urlname1,urlname2=urlname2,urlname3=urlname3
    '其它的代码太多了,亦不是主要的出错地方.
    end sub 假如现在在按钮里面要调用 
    Private Sub Command1_Click() 
    Call writetxt(100) 
    end sub 
      

  3.   

    过程urlclass的写法好奇怪......看不出有什么用,修改传入参数?干吗呢?貌似应该这样写:
    function urlclass(ByVal urlclass_nb) as adodb.recordset
    or
    function urlclass(ByVal urlclass_nb) as string()
    返回一个记录集或数组
      

  4.   

    或者:
    Sub urlclass(ByVal urlclass_nb) 
      urlclass_id = urlclass_nb 
      sqlc="select * from product where id=" & urlclass_id 
      rsc.Open sqlc, conn, 1, 1 
      urla = rsc("name1") 
      urlb = rsc("name2") 
      urlc = rsc("name3") 
      urlname1 = fromatstr(rsc("name1")) 
      urlname2 = fromatstr(rsc("name2")) 
      urlname3 = fromatstr(rsc("name3")) 
      rsc.Close 
      Set rsc = Nothing 
    '*************end url************** 
    End Sub urla...urlname1...等等声明为全局变量
      

  5.   

    家人,谢谢您.
    Sub urlclass(ByVal urlclass_nb, ByRef urla, ByRef urlb, ByRef urlc, ByRef urlname1, ByRef urlname2, ByRef urlname3) 
    end sub这个过程里面我是想通过一个ID值urlclass_nb来查询到结果后,返回6个值回去.不过现在,返回去的其中三个值用字符格式化处理后就变了.
      

  6.   

    Function FormatStr(String1) 的参数要 ByVal 限定
    所有类似 rsc("name1") 的地方都改成 rsc("name1").Value