Centar za edukaciju-BiH



#1 18.03.2018 14:44
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Loop za provera naziv fajlove
Kako napraviti provera na neki fajlovi do ke dodzemo do prvi slobodni fajl.
Na primer:
Kreiramo Excel fajlovi koj moze imati isti naziv kao i neki drugi fajl , mi treba da dodamo broj na ovaj novi fajl uvecan za 1 od najveci.
Test.xls
Test(1).xls
Test(2).xls
Test(3).xls
...
Test(24).xls
Nama sad fajl treba da se zove Test(25).xls
↑  ↓

#2 18.03.2018 18:11
dex Van mreze
Super Moderator
Registrovan od:23.02.2012
Postovi:625


Predmet:Re: Loop za provera naziv fajlove
Skoro sam radio nesto slicno ovde

Kod ovog koda, ako fali trojka, a imamo cetvorku, peticu i vece dobice naziv Izvestaj3

Ako zelis prvi slobodan najveci jednostavno izbaci if uslov

PreuzmiIzvorni kôd (Visual Basic):
  1.     Dim Naziv As String
  2.     Dim Putanja As String
  3.     Dim extenzija As String
  4.      
  5.     Putanja = "E:\Izvestaji\"
  6.     Naziv = "Izvestaj"
  7.     extenzija = ".csv"
  8.      
  9.     Dim brojac As Integer
  10.     brojac = 1
  11.      
  12.     Dim strfile As String
  13.     strfile = Dir(Putanja & "*" & extenzija)
  14.      
  15.         While strfile <> ""
  16.            
  17.                 brojac = brojac + 1
  18.            
  19.             strfile = Dir()
  20.         Wend
  21.        
  22.     Putanja = Putanja & Naziv & brojac & extenzija

Medjutim ni ovo ne radi proavilno ako neki fali.
Na primer ako imas 1,2,3,5 dobices rezultat 5. Razmislicu kako da se to resi
Ne znam za sta ti treba, ali mislim da ti ovo prvo zadovoljava potrebe
↑  ↓

#3 18.03.2018 20:44
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: Loop za provera naziv fajlove
Imam neki Export u excel e sad naziv tog fajla se formira na osnovu nekolku kriterija.
Nekad se dogodi naslov tog fajla da vec postoi pa sad trazim reseje da se doda jos broj u mali zagrade na novogformiranog fajla.

Ovako kako si postavio e u redu radice ovo ali ovo ih prebroi svi fajlova u taj direktorium i kreira novoi naslov.
Meni treba prebrojati samo smo fajlove koi imaju isti naslov.
↑  ↓

#4 18.03.2018 21:10
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: Loop za provera naziv fajlove
evo kako sam ja resio
PreuzmiIzvorni kôd (Visual Basic):
  1.    Dim xlsBrojac As Long
  2.     Dim strXLS As String
  3.     Dim strXLStmp As String
  4.         strXLStmp = Me.cboMagacin.Text & "_" & Me.cboDobavuvac.Text & "_" & Me.txtDataOD & "_" & Me.txtDataDO & ".xls"
  5.         xlsBrojac = 0
  6.         strXLS = strXLStmp
  7.    
  8.  
  9. subProverka:
  10.     Dim fs As New Scripting.FileSystemObject
  11.         If fs.FileExists(ReadIniValue(App.path & "\METMG.ini", "Parametri", "PatekaPDF") & strXLS) Then
  12.            xlsBrojac = xlsBrojac + 1
  13.            strXLS = Left(strXLStmp, Len(strXLStmp) - 4) & "(" & xlsBrojac & ")" & ".xls"
  14.            GoTo subProverka
  15.          Else
  16.            GoTo subExcel
  17.          End If
  18.  
  19. subExcel:
  20.     Dim objExcel As Excel.Application
  21.     Dim wbk As Excel.Workbook
  22.     Dim wsh As Excel.Worksheet
  23.     Set objExcel = CreateObject("Excel.Application")
  24.     Set wbk = objExcel.Workbooks.Add
  25.     Set wsh = wbk.Worksheets("Sheet1")
  26.           wbk.SaveAs ReadIniValue(App.path & "\METMG.ini", "Parametri", "PatekaPDF") & strXLS, FileFormat:=xlExcel8
  27.                 objExcel.Quit

I ovo moe ima mane odnosno mana je u to ako neko pobise neki fajl koj je imao i zagrade neki broj
u tom slucaju program popunece to prazno mesto.
↑  ↓

#5 18.03.2018 22:38
dex Van mreze
Super Moderator
Registrovan od:23.02.2012
Postovi:625


Predmet:Re: Loop za provera naziv fajlove
ovo bi trebalo da da sledeci najveci

PreuzmiIzvorni kôd (Visual Basic):
  1. subProverka:
  2.     Dim fs As New Scripting.FileSystemObject
  3.     If fs.FileExists(ReadIniValue(App.Path & "\METMG.ini", "Parametri", "PatekaPDF") & strXLS) Then
  4.        strfile = Dir(Putanja & strXLStmp & "*" & extenzija)
  5.         While strfile <> ""
  6.          If strfile <> strXLStmp & extenzija Then  ' da preskoci fajl koji nama broj u zagradi inace pravi gresku
  7.             trenutni = Left(strfile, Len(strfile) - 5)
  8.              trenutni = Right(trenutni, Len(trenutni) - 5)
  9.              If IsNumeric(trenutni) Then
  10.              broj = CInt(trenutni)
  11.                 If (broj >= brojac) Then
  12.                     brojac = broj + 1
  13.                 End If
  14.              End If
  15.          End If
  16.                  strfile = Dir()
  17.        Wend
  18.     Putanja = Putanja & strXLStmp & "("  & brojac & ")" & extenzija
  19.    End If

Kad sam provio ono moje bilo mi je vazno samo da imaju razlicita imena da ne dodje do overwrite
↑  ↓

#6 18.03.2018 22:58
dex Van mreze
Super Moderator
Registrovan od:23.02.2012
Postovi:625


Predmet:Re: Loop za provera naziv fajlove
U redu 8 umesto Len(trenutni) - 5 treba InStr(trenutni,"(")
↑  ↓

#7 18.03.2018 23:04
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: Loop za provera naziv fajlove
Za denes dosta e ne mozam da rabotam poveke.
Zdravje ke proveram utre kako raboti ova tvoe.
↑  ↓

#8 19.03.2018 12:16
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Loop za provera naziv fajlove
PreuzmiIzvorni kôd (Visual Basic):
  1. Function ImeF()
  2. Dim Putanja As String
  3. Dim Faj As String
  4. Dim Ext As String
  5. Dim ImeFajla As String
  6. Dim I As Integer
  7.  
  8. Ext = "txt"
  9. Fajl = "moj"
  10. Putanja = "C:\Temp\"
  11. ImeFajla = Putanja & Fajl & "." & Ext
  12. START:
  13. If Dir(ImeFajla) = "" Then
  14.   ImeF = ImeFajla
  15. Else
  16.  ImeFajla = Putanja & Fajl & "(" & I & ")." & Ext
  17.  I = I + 1
  18.  GoTo START
  19. End If
  20. MsgBox ImeF
  21. End Function

Ako hoces da broji od 1 onda I=I+1 prebaci red prije
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#9 21.03.2018 16:59
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Loop za provera naziv fajlove
Ovo niko i na broba izgleda.
Mislim da ****lje rjesenje ali eto to je mozda samo moje misljenje.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#10 21.03.2018 18:15
dex Van mreze
Super Moderator
Registrovan od:23.02.2012
Postovi:625


Predmet:Re: Loop za provera naziv fajlove
Vrlo elegantno i efektno, Ja u svojpj aplikaciji zamenio tvojim, ali i ovo daje prvi slobodan broj, a kako sam ja razumeo njemu treba najveci
↑  ↓

Stranice (2):1,2


Sva vremena su GMT +01:00. Trenutno vrijeme: 11: 13 pm.