none
Ciclo While RRS feed

  • Pergunta

  • boas pessoal...

    estou a desenvolver um programa de backup's.. mas estou com um pequeno problema.. quando o meu programa faz a pesquisa das base de dados, ele só encontra uma de cada extençao por pasta.. e percisava que listasse todas as base de dados..

    aqui vai o meu codigo:

     

    If Dir(sPath & "*.mdf") <> "" Then
    
    If (sPath <> "*.mdf") Then
      List1.AddItem (Dir(sPath & "*.mdf"))
      List2.AddItem (sPath)
    End If
    ElseIf Dir(sPath & "*.ldf") <> "" Then
    List1.AddItem (sPath)
    
      On Local Error Resume Next
       If folder.SubFolders.Count > 0 Then
        For Each subfolder In folder.SubFolders
          FSO_sqlserver sPath & subfolder.Name, bshowdialog
        Next
       End If
      Else
        lblpasta = ""
        Exit Sub
      End If
         DoEvents
      If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
        lblpasta.Caption = sPath
        DoEvents
        Set folder = fso.GetFolder(sPath)
          If Dir(sPath & "*.ldf") <> "" Then
            List1.AddItem (Dir(sPath & "*.ldf"))
            Me.List2.AddItem sPath
          End If
    On Local Error Resume Next
      If folder.SubFolders.Count > 0 Then
        For Each subfolder In folder.SubFolders
          FSO_sqlserver sPath & subfolder.Name, bshowdialog
        Next
      End If

     

    será que com um ciclo while resolvo este problema?


    A'Moreira
    quinta-feira, 26 de maio de 2011 11:21

Todas as Respostas

  • Ana, poderia exemplificar melhor sua estrutura de pastas e quais tipos de arquivos quer buscar?

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    sexta-feira, 27 de maio de 2011 02:11
  • eu queria que o programa procura-se por todo o disco C:\, ele ja faz isso com este codigo. mas so aparece na list uma de cada extençao (*.mdf e *.ldf) por pasta.. a primeira que ele encontrar poe na list i passa para a proxima pasta. 


    A'Moreira
    sexta-feira, 27 de maio de 2011 08:18
  • Ana, não tenho como analisar seu código agora, mas veja o código abaixo, só trocar as extensões que quer, e passar os diretórios correspondentes.

        private void copiarArquivos(string diretorio_origem, string diretorio_destino)
        {
          var files = Directory.GetFiles(diretorio_origem, "*.*", SearchOption.AllDirectories).Where(s => s.EndsWith(".png") || s.EndsWith(".jpg"));
          foreach (String f in files)
          {
            FileInfo fi = new FileInfo(f);
            File.Copy(fi.FullName, diretorio_destino + fi.Name, true);
          }
        }
    


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    sexta-feira, 27 de maio de 2011 14:15
  • pois mas este codigo tbm nao funciona, porque nao está em VB6..

     

    e nao sei "traduzir" para a minha linguagem de programaçao :S


    A'Moreira
    sexta-feira, 27 de maio de 2011 14:43
  • Ana, realmente não havia percebido que era VB6 e o código que lhe passei não terá tradução para VB6, infelizmente só tenho o VB6 em casa para tentar lhe ajudar, se ninguém conseguir te ajudar, hoje pela madruga tento ver se acho uma solução para você.

    Dica:

    Você está fazendo assim:

    If Dir(sPath & "*.mdf") <> "" Then

    ElseIf Dir(sPath & "*.ldf") <> "" Then

    Else

    End If

    Veja que ao encontrar arquivos.MDF ele entra no if e então ao término ele pula para o End IF ou seja não passando pela verificação dos ldf no ELSEIF, tente fazer um if para cada.

    If Dir(sPath & "*.mdf") <> "" Then
     If (sPath <> "*.mdf") Then
       List1.AddItem (Dir(sPath & "*.mdf"))
       List2.AddItem (sPath)
     End If
    End If
    If Dir(sPath & "*.ldf") <> "" Then
     List1.AddItem (sPath)
     On Local Error Resume Next
     If folder.SubFolders.Count > 0 Then
      For Each subfolder In folder.SubFolders
      FSO_sqlserver sPath & subfolder.Name, bshowdialog
      Next
     End If
    End If

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    sexta-feira, 27 de maio de 2011 16:45
  • eu tenho um if para cada extençao.. e tentei faz ciclos while para ele ver o resto da pasta se encontra mais ficheiros, mas nao consigo parar os ciclos..

     

    Dim folder As folder
    Dim subfolder As folder
    Do While (sPath) <> ""
      If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
      lblpasta.Caption = sPath
      DoEvents
    Set folder = fso.GetFolder(sPath)
    If Dir(sPath & "*.mdf") <> "" Then
    If (sPath <> "*.mdf") Then
      List1.AddItem (Dir(sPath & "*.mdf"))
      List2.AddItem (sPath)
    End If
    ElseIf Dir(sPath & "*.ldf") <> "" Then
    List1.AddItem (sPath)
      On Local Error Resume Next
       If folder.SubFolders.Count > 0 Then
        For Each subfolder In folder.SubFolders
          FSO_sqlserver sPath & subfolder.Name, bshowdialog
        Next
       End If
      Else
        lblpasta = ""
        Exit Sub
      End If
         DoEvents
         Loop
         Do While (Dir(sPath)) <> ""
      If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
        lblpasta.Caption = sPath
        DoEvents
        Set folder = fso.GetFolder(sPath)
          If Dir(sPath & "*.ldf") <> "" Then
            List1.AddItem (Dir(sPath & "*.ldf"))
            Me.List2.AddItem sPath
          End If
          
    On Local Error Resume Next
      If folder.SubFolders.Count > 0 Then
        For Each subfolder In folder.SubFolders
          FSO_sqlserver sPath & subfolder.Name, bshowdialog
        Next
      End If
      Loop
    End Sub
    

     

    me da uma ajuda aí, por favor..

    nao percisa ficar a trabalhar de madrugada, pode ser segunda feira mesmo..

    eu tenho de entregar o trabalho breve, mas nao percisa se sacrificar por mim..

    obrigado :)


    A'Moreira
    sexta-feira, 27 de maio de 2011 16:56
  • Ana, conseguiu solucionar seu problema? Não tive tempo para criar o script para você.

    Bom de qualquer forma de uma olhada nos links abaixo.

    http://www.dreamincode.net/forums/topic/195919-recursive-file-copy-based-on-file-extension/

    http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/f79143c5-2fae-49a8-ae17-267fb91db77a/

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    segunda-feira, 30 de maio de 2011 04:15
  • esse codigo aí nao é vb6..

     

    nao sei passar para a minha linguagem de programaçao.. :S


    A'Moreira
    segunda-feira, 30 de maio de 2011 08:34
  • Ana, realmente os links são de vb.net, me enganei feio, desculpe. A sintaxe é bem parecido e não reparei no try..cath no meio do código, veja os links abaixo, talvez ajudem (estes devem ser vb6 mesmo).

    http://www.ostrosoft.com/vb/projects/FindFileByExt/index.asp

    http://www.freevbcode.com/ShowCode.asp?ID=708

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    segunda-feira, 30 de maio de 2011 13:22
  • voce sabe como gerar um ficheiro Zip atraves do VB6?

     

    eu estive à procura no forum mas só encontrei para C# :S

     

    obrigado pelas dicas :)


    A'Moreira
    terça-feira, 31 de maio de 2011 15:58
  • Ana, infelizmente não conheço! =(

    De uma olhada nos links abaixo, talvez ajude.

    http://www.vbaccelerator.com/codelib/zip/zip.htm

    http://www.codeguru.com/vb/gen/vb_graphics/fileformats/article.php/c6743

    http://www.ehow.com/how_6086189_create-zip-file-vb.html

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    terça-feira, 31 de maio de 2011 16:02