Adox.Table ile excel tablosu oluşturabilir miyim?

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,640
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Merhaba,

Adox.Table nesnesi ile excel içinde tablo oluşturarak bunu sorguda kullanabilirmiyim.Yoksa recordset'in kendi komutları ile mi işimi halletmem lazım.Merakımdan soruyorum,kendim denedim ama sorgu'da kullanılacak bir tablo oluşturamadım.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,374
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Temporary table gibi birşey oluşturmayı amaçlıyorsanız Adox.Table oluşturabilirsiniz. Bence, 'CreateTable' sql ile daha kolay olacaktır.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,640
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Zeki bey geçici tabloyu sql sorgusunda kullanma imkanı olacak mı?Create table'da sanırım access dosyası oluşuyor.Geçici tablo ile yapılabilecek örnek bir çalışmanız var mı?
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,374
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Veritabanında çalışma zamanı yapılacak bir tablonun bu amaçla kullanabileceğinizi, iş bitiminde tablonun silinebileceğini tahmin ettim sadece... Dikkate almayın.

Çalışma zamanında tablo iki yöntem ile yapılabilir:
- Adox.Table,
- Sql 'CreateTable' deyimi

Bu tabloyu doldurup sorguda kullanabilirsiniz. Bu tablonun fiziki olarak veritabanında olacağını da belirteyim. Aynı isimde tekrar oluşturmayı denediğinizde, tablonun zaten varolduğuna dair hata iletisi alacaksınız.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,640
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Zeki bey,

Aşağıdaki gibi bir kod buldum ama cat.Tables.Append tbl satırında hata veriyor.

Kod:
Function CreateTableAdox()
    'Amaç:   ADOX kullanarak veritabanı oluşturmak.
    Dim cat As New ADOX.Catalog
    Dim tbl As ADOX.Table
    Dim con As New ADODB.Connection

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""

    Set cat.ActiveConnection = con
    'Set cat.ActiveConnection = CurrentProject.Connection
    'Tablo oluşturucuya ulaşma.
    Set tbl = New ADOX.Table
    tbl.Name = "tblAdoxContractor"
 
    'Sütunları oluşturma
    With tbl.Columns
        .Append "ContractorID", adInteger   'Number (Long Integer)
        .Append "Surname", adVarWChar, 30   'Text (30 max)
        .Append "FirstName", adVarWChar, 20 'Text (20 max)
        .Append "Inactive", adBoolean       'Yes/No
        .Append "HourlyFee", adCurrency     'Currency
        .Append "PenaltyRate", adDouble     'Number (Double)
        .Append "BirthDate", adDate         'Date/Time
        .Append "Notes", adLongVarWChar     'Memo
        .Append "Web", adLongVarWChar       'Memo (for hyperlink)
 
        'Sütun özelliklerini oluşturma.
        'Otomatik sayı
        With !ContractorID
            Set .ParentCatalog = cat
 
            .Properties("Autoincrement") = True     'Otomatik sayı
            .Properties("Description") = "Automatically " & _
                "generated unique identifier for this record."
        End With
 
        'Gerekli alan
        With !Surname
            Set .ParentCatalog = cat
            .Properties("Nullable") = False         'Gerekli.
            .Properties("Jet OLEDB:Allow Zero Length") = False
        End With
 
        'Set a validation rule.
        With !BirthDate
            Set .ParentCatalog = cat
            .Properties("Jet OLEDB:Column Validation Rule") = _
                "Is Null Or <=Date()"
            .Properties("Jet OLEDB:Column Validation Text") = _
                "Birth date cannot be future."
        End With
 
        'Hyperlink alanı.
        With !Web
            Set .ParentCatalog = cat
            .Properties("Jet OLEDB:Hyperlink") = True 'Hyperlink.
        End With
    End With
 
    'Yeni tabloyu kataloga kaydetme.
    cat.Tables.Append tbl
    Debug.Print "tblAdoxContractor created."
    Set tbl = Nothing
 
    'Yeni tabloya ulaşma
    Set tbl = New ADOX.Table
    tbl.Name = "tblAdoxBooking"
 
    'Sütunlara ulaşma.
    With tbl.Columns
        .Append "BookingID", adInteger
        .Append "BookingDate", adDate
        .Append "ContractorID", adInteger
        .Append "BookingFee", adCurrency
        .Append "BookingNote", adWChar, 255
 
        'Alan özelliklerini oluşturma.
        With !BookingID                             'Otomatik sayı.
            .ParentCatalog = cat
            .Properties("Autoincrement") = True
        End With
        With !BookingNote                           'Gerekli.
            .ParentCatalog = cat
            .Properties("Nullable") = False
            .Properties("Jet OLEDB:Allow Zero Length") = False
        End With
    End With
 
    'Yeni tabloyu kaydetme.
    cat.Tables.Append tbl
    Debug.Print "tblAdoxBooking created."
 
        'Hafızadaki bilgileri temizleme
    Set tbl = Nothing
    Set cat = Nothing
End Function
 
Üst