Bilgilerim için veritabanı nasıl oluşturabilirim ?

Katılım
22 Mayıs 2009
Mesajlar
1,017
Excel Vers. ve Dili
Office 2003
Değerli Uzmanlarım

Exceldeki verilerime has " d:\ bordro\ yıllık " adı altında veritabanı nasıl oluşturabilirim
 

Ekli dosyalar

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
Merhaba,

Ne tip veritabanı istiyorsunuz? xls?, mdb?, txt?
 
Katılım
22 Mayıs 2009
Mesajlar
1,017
Excel Vers. ve Dili
Office 2003
Zeki GÜRSOY Uzmanım

Girdiğim verilere geri dönüşüm yapacağım için sizce uygun olan ne ise o olsun
Yani kişiye OCAK bordrosunu düzenledik VERİTABANINDA saklamaya saldık 5 ay sonra HAziran ayında geldi OCAK ayı bordrosunu istediği zaman VERİTABANINA gidip ocak bordro getir diyeceği veritabanı sizce hangisi ise o olsun


Ama Zeki Abi mantığınıda öğretmeniz mümkün 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ını xls olarak ve gerektiğinde üzerinde çalışabilmeniz için ekteki örnek gibi tasarladım. Umarım işinizi görür..

Modul:
Kod:
Option Explicit
Public Const DB_PATH As String = "d:\bordro\yıllık\"

Sub yeni_DB()
Dim cvp As String

    cvp = InputBox("Yıl adı yazın:", , 2009)
    If cvp = "" Then Exit Sub
    
    If Dir(DB_PATH & cvp & ".xls") <> "" Then _
    MsgBox "Veritabanı zaten mevcut!", vbExclamation: Exit Sub

    Call yeni_yil(CInt(cvp))
    MsgBox "Veritabanı, '" & DB_PATH & cvp & ".xls'  " & Chr(13) & _
    "olarak oluşturuldu.", vbInformation
    
End Sub

Sub yeni_TABLO()
Dim cvp As String

    cvp = InputBox("Ay adını, Veritabanı adıyla (yılıyla)  " & Chr(13) & _
    "birlite ve ';' ayracı ile yazın.", , "OCAK;2009")
    If cvp = "" Then Exit Sub
    Call yeni_ay(cvp)
    
End Sub

Sub listeyi_KAYDET()
    Call kaydet([I1], [H1])
End Sub

Sub ekrana_LISTELE()
    Call listele([I1], [H1])
End Sub

Private Sub listele(yil As Integer, ay As String)
Dim cn As Object, rs As Object

Set cn = CreateObject("ADODB.Connection")

cn.Open _
"Driver={Microsoft Excel Driver (*.xls)};ReadOnly=True;dbq=" & _
DB_PATH & yil & ".xls"

Set rs = cn.Execute("select * from [" & TR_Duzelt(ay) & "$]")

[a3:w1000].ClearContents
[a3].CopyFromRecordset rs

rs.Close
cn.Close

Set rs = Nothing
Set cn = Nothing
End Sub

Private Sub yeni_yil(yil As Integer)
Dim app As Application
Dim wb As Workbook, z%
   
Set app = CreateObject("Excel.Application")
Set wb = app.Workbooks.Add

wb.Sheets(1).Name = yil

app.DisplayAlerts = False

For z = wb.Sheets.Count To 2 Step -1
    wb.Sheets(z).Delete
Next

wb.SaveAs DB_PATH & yil & ".xls"
app.Quit

Set wb = Nothing
Set app = Nothing
End Sub


Private Sub kaydet(yil As Integer, ay As String)
Dim cn As Object, rs As Object
Dim say&, y&, z%

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open _
"Driver={Microsoft Excel Driver (*.xls)};ReadOnly=True;dbq=" & _
DB_PATH & yil & ".xls"

rs.Open "[" & ay & "$]", cn, 1, 3

say = [a1].Value + 2

For y = 3 To say
    rs.addnew
    For z = 1 To 23
        rs(z - 1) = Cells(y, z)
    Next
    rs.Update
Next

rs.Close
cn.Close

Set rs = Nothing
Set cn = Nothing
End Sub

Private Sub yeni_ay(arg As String)
Dim cn As Object, arr1, arr2$, arr3$(), x$

arr1 = Array("SIRA", "GOREV_YERI", "ADI_SOYADI", "MED_DUR", "SIG_GUN_SAY", "MAAS_AY_GUN_SAY", _
             "SSK_MATRAH", "MAAS_TUT", "SSK_19_5", "DENGE_TAZ", "SEND_OD", "TAH_TOP", _
             "TOP_VER_MATR", "GEL_VER", "DAM_VER", "SSK_19__5", "SSK_14", "SEND_KES", _
             "ICRA", "KES_TOP", "AGI", "NET_OD", "BANKA_NO")

arr2 = Join(arr1, " VARCHAR(25), ") & " VARCHAR(25)"
arr3 = Split(arg, ";")

Set cn = CreateObject("ADODB.Connection")

cn.Open _
"Driver={Microsoft Excel Driver (*.xls)};ReadOnly=True;dbq=" & _
DB_PATH & arr3(1) & ".xls"

On Error Resume Next
cn.Execute _
"CREATE TABLE " & TR_Duzelt(arr3(0)) & "(" & arr2 & ");"

cn.Close
Set cn = Nothing

x = TR_Duzelt(Left$(arg, InStr(1, arg, ";") - 1))
If Err Then
    MsgBox "'" & x & "' tablosu mevcuttur.", vbExclamation
Else
    MsgBox "Veritabanına '" & x & "' tablosu oluşturuldu.", vbInformation
End If
End Sub

Private Function TR_Duzelt(arg As String)
Dim tmp As String

tmp = BuyukHarf(arg)
tmp = Replace(tmp, "Ç", "C")
tmp = Replace(tmp, "Ğ", "G")
tmp = Replace(tmp, "İ", "I")
tmp = Replace(tmp, "Ö", "O")
tmp = Replace(tmp, "Ş", "S")
tmp = Replace(tmp, "Ü", "U")
TR_Duzelt = tmp
End Function

Private Function BuyukHarf(arg As String) As String
    BuyukHarf = UCase$(Replace(arg, "i", "İ"))
End Function

Private Function KucukHarf(arg As String) As String
    KucukHarf = LCase$(Replace(arg, "İ", "i"))
End Function
.
 

Ekli dosyalar

istanbulcahan

Altın Üye
Katılım
11 Ocak 2008
Mesajlar
1,386
Excel Vers. ve Dili
Office 365 (Türkçe)
Altın Üyelik Bitiş Tarihi
12-11-2025
Veritabanını xls olarak ve gerektiğinde üzerinde çalışabilmeniz için ekteki örnek gibi tasarladım. Umarım işinizi görür..

Modul:
Kod:
Option Explicit
Public Const DB_PATH As String = "d:\bordro\yıllık\"

Sub yeni_DB()
Dim cvp As String

    cvp = InputBox("Yıl adı yazın:", , 2009)
    If cvp = "" Then Exit Sub
    
    If Dir(DB_PATH & cvp & ".xls") <> "" Then _
    MsgBox "Veritabanı zaten mevcut!", vbExclamation: Exit Sub

    Call yeni_yil(CInt(cvp))
    MsgBox "Veritabanı, '" & DB_PATH & cvp & ".xls'  " & Chr(13) & _
    "olarak oluşturuldu.", vbInformation
    
End Sub

Sub yeni_TABLO()
Dim cvp As String

    cvp = InputBox("Ay adını, Veritabanı adıyla (yılıyla)  " & Chr(13) & _
    "birlite ve ';' ayracı ile yazın.", , "OCAK;2009")
    If cvp = "" Then Exit Sub
    Call yeni_ay(cvp)
    
End Sub

Sub listeyi_KAYDET()
    Call kaydet([I1], [H1])
End Sub

Sub ekrana_LISTELE()
    Call listele([I1], [H1])
End Sub

Private Sub listele(yil As Integer, ay As String)
Dim cn As Object, rs As Object

Set cn = CreateObject("ADODB.Connection")

cn.Open _
"Driver={Microsoft Excel Driver (*.xls)};ReadOnly=True;dbq=" & _
DB_PATH & yil & ".xls"

Set rs = cn.Execute("select * from [" & TR_Duzelt(ay) & "$]")

[a3:w1000].ClearContents
[a3].CopyFromRecordset rs

rs.Close
cn.Close

Set rs = Nothing
Set cn = Nothing
End Sub

Private Sub yeni_yil(yil As Integer)
Dim app As Application
Dim wb As Workbook, z%
   
Set app = CreateObject("Excel.Application")
Set wb = app.Workbooks.Add

wb.Sheets(1).Name = yil

app.DisplayAlerts = False

For z = wb.Sheets.Count To 2 Step -1
    wb.Sheets(z).Delete
Next

wb.SaveAs DB_PATH & yil & ".xls"
app.Quit

Set wb = Nothing
Set app = Nothing
End Sub


Private Sub kaydet(yil As Integer, ay As String)
Dim cn As Object, rs As Object
Dim say&, y&, z%

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open _
"Driver={Microsoft Excel Driver (*.xls)};ReadOnly=True;dbq=" & _
DB_PATH & yil & ".xls"

rs.Open "[" & ay & "$]", cn, 1, 3

say = [a1].Value + 2

For y = 3 To say
    rs.addnew
    For z = 1 To 23
        rs(z - 1) = Cells(y, z)
    Next
    rs.Update
Next

rs.Close
cn.Close

Set rs = Nothing
Set cn = Nothing
End Sub

Private Sub yeni_ay(arg As String)
Dim cn As Object, arr1, arr2$, arr3$(), x$

arr1 = Array("SIRA", "GOREV_YERI", "ADI_SOYADI", "MED_DUR", "SIG_GUN_SAY", "MAAS_AY_GUN_SAY", _
             "SSK_MATRAH", "MAAS_TUT", "SSK_19_5", "DENGE_TAZ", "SEND_OD", "TAH_TOP", _
             "TOP_VER_MATR", "GEL_VER", "DAM_VER", "SSK_19__5", "SSK_14", "SEND_KES", _
             "ICRA", "KES_TOP", "AGI", "NET_OD", "BANKA_NO")

arr2 = Join(arr1, " VARCHAR(25), ") & " VARCHAR(25)"
arr3 = Split(arg, ";")

Set cn = CreateObject("ADODB.Connection")

cn.Open _
"Driver={Microsoft Excel Driver (*.xls)};ReadOnly=True;dbq=" & _
DB_PATH & arr3(1) & ".xls"

On Error Resume Next
cn.Execute _
"CREATE TABLE " & TR_Duzelt(arr3(0)) & "(" & arr2 & ");"

cn.Close
Set cn = Nothing

x = TR_Duzelt(Left$(arg, InStr(1, arg, ";") - 1))
If Err Then
    MsgBox "'" & x & "' tablosu mevcuttur.", vbExclamation
Else
    MsgBox "Veritabanına '" & x & "' tablosu oluşturuldu.", vbInformation
End If
End Sub

Private Function TR_Duzelt(arg As String)
Dim tmp As String

tmp = BuyukHarf(arg)
tmp = Replace(tmp, "Ç", "C")
tmp = Replace(tmp, "Ğ", "G")
tmp = Replace(tmp, "İ", "I")
tmp = Replace(tmp, "Ö", "O")
tmp = Replace(tmp, "Ş", "S")
tmp = Replace(tmp, "Ü", "U")
TR_Duzelt = tmp
End Function

Private Function BuyukHarf(arg As String) As String
    BuyukHarf = UCase$(Replace(arg, "i", "İ"))
End Function

Private Function KucukHarf(arg As String) As String
    KucukHarf = LCase$(Replace(arg, "İ", "i"))
End Function
.
Üstadım ben dosyayı açmaya çalıştım run time error 52 hatası verdi.
 
Üst