dim i as integer
dim strsql as string
dim rs as new adodb.recordset
sql="select intNumber,strName,intStat from tab1"
rs.open sql,cnn,1,3
if rs.eof then rs.close"set rs=nothing
for i=0 to rs.recordcount-1
   if rs!intNumber>0 then
      select case rs!strName
          case "Name1"
               call ...
          case "Name2"
               call ...
      end select 
      call ...
   esle
      select case rs!strName
          case "Name1"
               call ...
          case "Name2"
               call ...
      end select 
   end if
   if rs!intStat=0 then
      call ...
   endif      
next请问这个循环,应该怎么优化?

解决方案 »

  1.   

    for i=0 to rs.recordcount-1 
      if rs!intNumber>0 then 
          select case rs!strName 
              case "Name1" 
                  call ... 
              case "Name2" 
                  call ... 
          end select 
          call ... 
      esle 
          select case rs!strName 
              case "Name1" 
                  call ... 
              case "Name2" 
                  call ... 
          end select 
      end if 
      if rs!intStat=0 then 
          select case rs!strName 
              case "Name1" 
                  call ... 
              case "Name2" 
                  call ... 
          end select 
      endif      
    next 我少写了一个select块。我觉得这几个select写的不够好。
      

  2.   

    for i=0 to rs.recordcount-1 
          select case rs!strName 
              case "Name1" 
                  if rs!intStat>0 then
                      call ... 
                  else
                      call ...
                  endif
                  if rs!intStat=0 then call ...
              case "Name2" 
                  if rs!intStat>0 then
                      call ... 
                  else
                      call ...
                  endif
                  if rs!intStat=0 then call ...
          end select 
    next我这样改是否会好一些?
      

  3.   


    '这个如果. case "Name2" (有很多个)'那
                    if rs!intStat>0 then 
                      call ... 
                  else 
                      call ... 
                  endif '这种要写N次.
      
      

  4.   

    写错了  是这样子的
    for i=0 to rs.recordcount-1 
          select case rs!strName 
              case "Name1" 
                  if rs!intNumber>0 then 
                      call ... 
                  else 
                      call ... 
                  endif 
                  if rs!intStat=0 then call ... 
              case "Name2" 
                  if rs!intNumber>0 then 
                      call ... 
                  else 
                      call ... 
                  endif 
                  if rs!intStat=0 then call ... 
          end select 
    next