Inquiridor
Ciclo While

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
Todas as Respostas
-
-
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 -
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á. *** -
-
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á. *** -
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 -
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á. *** -
-
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á. *** -
-
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á. ***- Sugerido como Resposta Heloisa PiresModerator terça-feira, 10 de julho de 2012 20:50