(VB6)Kodla Klasör-Data oluşturmada hata?

Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Arkadaşlar selam.

VİSUAL BASİC-6 da yaşadığım bir sorunumu paylaşmak istiyorum.Bu konuda yardıma ihtiyacım var.

Kod:
Cat.Create sCnn
satırında -2147217897 hatası var diyor.Kodlardamı yanlışlık var bir türlü çözemedim.


Kod:
Private Sub yenidata_kayit_Click()
On Error GoTo Klasorvar:
If Text1 = "" Then
MsgBox " Okul adını boş bırakamazsınız.", vbCritical, "DİKKAT!!!!!"
Exit Sub
Text1.SetFocus
End If
If Text2 = "" Then
MsgBox " Eğitim yılını boş bırakamazsınız.", vbCritical, "DİKKAT!!!!!"
Exit Sub
Text2.SetFocus
End If
Dim Cat     As Object
Dim Tbl(19) As Object
Dim sCnn    As String
Dim DatabasePath As String
Dim Şifre As String
Dim ds
Set ds = CreateObject("Scripting.FileSystemObject")
    Klasör = App.Path + "\Tools\DATA\" & Text1.Text

         
    ds.CreateFolder Klasör 'Yeni klasör oluşturuyoruz
olustur:
    Şifre = "" 'Veritabanını şifreliyoruz."xxxxx" x yazan yere şifrenizi yazın
    DatabasePath = App.Path + "\Tools\DATA\" & Text1.Text & "\" & Text2.Text & ".mdb" 'Oluşturlan klasör içine veritabanını atar ve Text2de yazanı isim olarak verir
    Set Cat = CreateObject("ADOX.Catalog")
    sCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DatabasePath & ";User ID=admin;Jet OLEDB:Database Password=" & Şifre 'Şifreli veritabanı yaratır
    Cat.Create sCnn


  '----------* Tablo Özelliklerinin Tanımlanması BRANŞLAR *----------
  Set Tbl(0) = CreateObject("ADOX.Table")
  Tbl(0).ParentCatalog = Cat
  With Tbl(0)
    .Name = "BRANŞLAR"
    .Columns.Append "BRANŞ_ADI", adVarWChar, 250
      .Columns("BRANŞ_ADI").Properties("Nullable").Value = False
  End With
  Cat.Tables.Append Tbl(0)

  '----------* Tablo Özelliklerinin Tanımlanması DERS_HAVUZU *----------
  Set Tbl(1) = CreateObject("ADOX.Table")
  Tbl(1).ParentCatalog = Cat
  With Tbl(1)
    .Name = "DERS_HAVUZU"
    .Columns.Append "DERS_KODU", adVarWChar, 50
      .Columns("DERS_KODU").Properties("Nullable").Value = False
    .Columns.Append "DERS_ADI", adVarWChar, 50
      .Columns("DERS_ADI").Properties("Description").Value = "1"
      .................................

     ...................................

     ...................................

  Set Cat = Nothing
  MsgBox Text1 & " Okuluna ait " & Text2 & " yılı bilgileri başarıyla oluşturulmuştur.", vbInformation, "RAPOR"
klasor_list.ListItems.Clear
egitimyil_list.ListItems.Clear
Text1.Text = ""
Text2.Text = ""
Call tusduzeni
Call KlasorListele
Call DosyaListele
Exit Sub
Exit Sub


Klasorvar:
If Err = 58 Then
If MsgBox(Text1 & " Okuluna ait " & Text2 & " yılı bilgilerini oluşturmak istediğinize eminmisiniz?", vbYesNo Or vbInformation, "ONAYLAMA") = vbYes Then
Text2.SetFocus
GoTo olustur
End If
End If

If Err = -2147217897 Then
If MsgBox(Text1 & " Okuluna ait " & Text2 & " yılı bilgileri zaten mevcut.Yeni yıl girişi yapmak istermisiniz?", vbYesNo Or vbCritical, "UYARI") = vbYes Then
Text2.Text = ""
Text2.SetFocus
Exit Sub
End If
End If
Exit Sub
End Sub
Yukarıdaki kodlarla bir access veri tabanı oluşturuyorum.Form üzerindeki 2 textboxtan biri oluşturacağım klasör adını ikincisi oluşturacağım data adını belirliyor.

Şimdi sorun şu;

1- Eğer daha önceden oluşturulmuş bir klasör varsa bu klasöre ait yeni data oluşturmak için 58 nolu hata mesajını göstermesi ve devam etmesi gerekiyor.burda pek sorun yok gibi aslında.yani yeni datayı oluşturuyor.

2-Önemli olan text2 ye yazdığımız isimle oluşturmak istediğimiz datanın o klasörün içerisinde varsa -2147217897 hata mesajına gitmesi ve görevi durdurması.İşte sorun burda başlıyor.Belirlediğim hata mesajını görmüyor.Yani 58 nolu her sefeeerinde 58 nolu hatayı gördükten sonra olustur: olayına dönüyor ve ordada data var olduğundan
Kod:
Cat.Create sCnn
satırında hata veriyor.Bir türlü istediğim gibi ayarlayamadım.Yardımcı olursanız sevinirim.

Teşekkürler.
 
Katılım
22 Haziran 2005
Mesajlar
998
Excel Vers. ve Dili
Office 2007 Türkçe
Önce
On Error GoTo Klasorvar:
hata kontrolünü prosedür başına koymanız hiçbir zaman doğru değil. Bu hata kontrolünü kontrol etmek istediğiniz satırın bir üstüne koyun. Bu şekilde başka bir hata meydana gelirse bunu anlayabilirsiniz.

Bunu yaptıktan sonra ki durum hakkında bilgilendirirseniz yardımcı olmaya çalışırım.
 
Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Sayın Alpi;
Dediğinizi yaptım.Bu kezde 3709 : Bağlantı,bu işlemi gerçekleştirmek için kullanılamıyor.Kapalı veya bu koşullarda geçersiz.
Diye yeni hata mesajından sonra
Kod:
Tbl(0).ParentCatalog = Cat
satırına yöneldi.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sn Tankut SAZLI

Konularımızdan biri VBA olduğundan, muhtemelen benzer konu olduğunu düşünerek VB ile ilgili bir soru sormuşsunuz. Bu konu ile ilgili sorularınızı VB forumlarına yöneltmeniz daha uygun olacaktır. Buraya sormakta ısrar ederseniz excel soruları dışında diğer başlıklara yazabilirsiniz.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın Tankut SAZLI,

Access uygulamalarında kullandığım iki fonksiyon var. Bu fonksiyonlar araştıracağınız klasörü ve içini araştırıp oluşturmaya çalıştığınız dosyanın olup olmadığını arıyor ve eğer yoksa oluşturmasını sağlıyor. İki adet fonksiyon:

Kod:
Function fReturnFilePath(strFileName As String, _
    strDrive As String) As String
Dim varItm As Variant
Dim strFiles As String
Dim strTmp As String
    
    If InStr(strFileName, ".") = 0 Then
        MsgBox "Sorry!! Need the complete name", vbCritical
        Exit Function
    End If
    
    strFiles = ""
    With Application.FileSearch
        .NewSearch
        .LookIn = strDrive
        .SearchSubFolders = True
        .Filename = strFileName
        .MatchTextExactly = True
        .FileType = msoFileTypeAllFiles
        If .Execute > 0 Then
            For Each varItm In .FoundFiles
                strTmp = fGetFileName(varItm)
                If strFileName = strTmp Then
                    fReturnFilePath = varItm
                    Exit Function
                End If
            Next varItm
        End If
    End With
End Function

Private Function fGetFileName(strFullPath) As String
Dim intPos As Integer, intLen As Integer
    intLen = Len(strFullPath)
    If intLen Then
        For intPos = intLen To 1 Step -1
            'Find the last \
            If Mid$(strFullPath, intPos, 1) = "\" Then
                fGetFileName = Mid$(strFullPath, intPos + 1)
                Exit Function
            End If
        Next intPos
    End If
End Function
Fonksiyona gidiş olarak şu parçayı yazdım

Kod:
 Name1 = CurrentProject.Path & "\form118\" & tarih1 & ".xls"
    strFileName = tarih1 & ".xls"
    strFilePath = fReturnFilePath(strFileName, CurrentProject.Path)
    If strFilePath <> Name1 Then
         xlApp.Workbooks.Add(CurrentProject.Path & "\Form118.xlt").SaveAs Name1
    End If
Burada tarih1.xls Excel dosyası yoksa oluştur yoksa aç gibi bir komut veriyorum.

İşinize yarar sanırım.

İyi çalışmalar:)
 
Katılım
22 Haziran 2005
Mesajlar
998
Excel Vers. ve Dili
Office 2007 Türkçe
Şu mesajı aldıktan sonra mı hata ile karşılaştınız

Kod:
If MsgBox(Text1 & " Okuluna ait " & Text2 & " yılı bilgilerini oluşturmak istediğinize eminmisiniz?", vbYesNo Or vbInformation, "ONAYLAMA") = vbYes Then
Bunu şunun için soruyorum; GoTo olustur: satırı ile tekrar geri dönülmekte bu durumda set komutu kullanılan değişkenlerden dolayı hata meydana geliyor olabilir.

Size şöyle bir tavsiyede bulunmak isterim; Go to yerine tekrar işletilmesini istediğiniz satırlar için ayrı bir prosedür yazın. Daha açık bir ifade ile yukarıdaki prosedürünüzü birden fazla prosedür haline getirin. Örneğin bağlantı için ayrı bir prosedür, Kolonları oluşturmak ve adlandırmak için ayrı prosedür yazın. Prosedürlerinizi ne kadar artıtırsanız hem okuması kolay olur (böylelikle hatalar kolay anlaşılır) hemde daha verimli bir uygulama ortaya çıkımış olur.
 
Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Say&#305;n leventm;
Ne deseniz hakl&#305;s&#305;n&#305;z.&#214;ncelikle benzer algoritmalar i&#231;erdi&#287;i i&#231;in vb sorular&#305;n&#305; buraya ta&#351;&#351;&#305;makta sorun olmayaca&#287;&#305;n&#305; d&#252;&#351;&#252;nm&#252;&#351;t&#252;m.Ve a&#231;&#305;k&#231;a ifade etmeliyim ki di&#287;er forumlarda burda g&#246;rd&#252;&#287;&#252;m performans&#305; yakalayam&#305;yorum.Bu nedenle konuyu burda a&#231;t&#305;m.Birde Excel d&#305;&#351;&#305;ndaki sorular i&#231;in de bir ba&#351;l&#305;k a&#231;abilseniz(var fakat sadece access) &#246;zellikle daha &#246;ncede belirtti&#287;im gibi vba ile vb karde&#351; gibi olduklar&#305;ndan Visual Basic-6 ba&#351;l&#305;&#287;&#305; herhalde daha geni&#351; ve profesyonelce bir kitle yakalaman&#305;za katk&#305; sa&#287;l&#305;cakt&#305;r diye na&#231;izane g&#246;r&#252;&#351;lerimi bildirmek isterim.
L&#252;tfen sayg&#305;s&#305;zl&#305;k olarak alg&#305;lamay&#305;n,i&#351;inizi &#246;&#287;retme gibi bir d&#252;&#351;&#252;ncem yoktu.
Te&#351;ekk&#252;rler.
 
Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Say&#305;n alpi bir &#246;nceki mesaj&#305;n&#305;zda dedi&#287;inz y&#246;ntemi uygulad&#305;ktan sonra sonra son mesaj&#305;n&#305;zdaki hata ile kar&#351;&#305;la&#351;madan belirtti&#287;im hata &#231;&#305;kt&#305;.
 
Katılım
22 Haziran 2005
Mesajlar
998
Excel Vers. ve Dili
Office 2007 Türkçe
Sayın Tankut Sazlı anlayamadım hatlar karıştı:)

Yeniden soruyormuş gibi sorar mısınız.

Birde kodlarınızın son halini de ekleyin.
 
Üst