Mesela excel'de iken ismi Std.Mt.Anh. olan bir alan excelden access'e aktarıp database dosyası oluşturduğumda StdMtAnh haline dönüşüyor bu sonradan üzerine ekleme yaparken diğer
Excel dosyasında bu alanlar eşitlenmediğinden aktarma yapmıyor. Her defasında excel'de birleştirip 800.000 satırı database dosyası yapmakta çok zaman alıyor. Eğer buda olmazsa işimi buda çözemeyecek maalesef... Bu neden oluyor olabilir arkadaşlar?
Access 2010 kullanmaktayım. Teşekkürler.
Örnek alanlar
Std.Mt.Anh. = StdMtAnh
Döküman Rev. = Döküman Rev
İşlem plan no. = İşlem plan no
Merhaba, accessde, tablodaki alan adlarında noktalama işareti kullanamazsınız. Accesse veriyi
Vba kodları ile tablodaki sırası veya alan adını belirterek almalısın.
Dim lngColumn As Long
Dim xlx As Object, xlw As Object, xls As Object, xlc As Object
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim blnEXCEL As Boolean
blnEXCEL = False
On Error Resume Next
Set xlx = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Set xlx = CreateObject("Excel.Application")
blnEXCEL = True
End If
Err.Clear
On Error GoTo 0
xlx.Visible = True
Set xlw = xlx.Workbooks.Open(CurrentProject.Path & "\exceldokuman.xlsx", , True)
Set xls = xlw.Worksheets("Sayfa1")
Set xlc = xls.Range("A2")
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("tbl_tablo1", dbOpenDynaset, dbAppendOnly)
On Error Resume Next
Do While xlc.Value <> ""
rst.AddNew
For lngColumn = 0 To rst.Fields.Count
rst.Fields(lngColumn).Value = xlc.Offset(0, lngColumn).Value
Next lngColumn
rst.Update
Set xlc = xlc.Offset(1, 0)
Loop
rst.Close
Set rst = Nothing
dbs.Close
Set dbs = Nothing
Set xlc = Nothing
Set xls = Nothing
xlw.Close False
Set xlw = Nothing
If blnEXCEL = True Then xlx.Quit
Set xlx = Nothing
Üstteki kod,
Access uygulamanızla aynı dizindeki exceldokuman.xlsx isimli
Excel belgesinin Sayfa1 sayfasındaki verileri, tbl_tablo1 isimli tabloya aktarır.
Sayın incsoft açtığınız 3 konu da bir biriyle ilişkili. takip açısından bir soruyu sorduğunuzda alınan cevap sorunlu ise lütfen aynı konu altında sorunuza devam edin farklı bir sorunsa yeni konu açın.
Ve lütfen açtığınız her konuya olumlu ya da olumsuz geri dönün.
https://accesstr.net/konu-excelden-veri-...#pid163964 bu bağlantıda 4 farklı yöntemle excelden accesse veri aktarılmış, benim tavsiyem 4. yöntemi uygulamanızdır.
Temel mantık:
1 - ilgili
Excel dosyası geçici olarak oluşturulan "TmpTablo"'na bağlanıyor
2 - oluşturulan bu geçici tablodaki veriler "insert" sorgusu kullanılarak istenilen tabloya ekleniliyor.
çalışmanızı eklerseniz çözüm bulmak kolaylaşır
iyi çalışmalr
(05/03/2020, 13:47)ozanakkaya yazdı: Merhaba, accessde, tablodaki alan adlarında noktalama işareti kullanamazsınız. Accesse veriyi Vba kodları ile tablodaki sırası veya alan adını belirterek almalısın.
Dim lngColumn As Long
Dim xlx As Object, xlw As Object, xls As Object, xlc As Object
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim blnEXCEL As Boolean
blnEXCEL = False
On Error Resume Next
Set xlx = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Set xlx = CreateObject("Excel.Application")
blnEXCEL = True
End If
Err.Clear
On Error GoTo 0
xlx.Visible = True
Set xlw = xlx.Workbooks.Open(CurrentProject.Path & "\exceldokuman.xlsx", , True)
Set xls = xlw.Worksheets("Sayfa1")
Set xlc = xls.Range("A2")
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("tbl_tablo1", dbOpenDynaset, dbAppendOnly)
On Error Resume Next
Do While xlc.Value <> ""
rst.AddNew
For lngColumn = 0 To rst.Fields.Count
rst.Fields(lngColumn).Value = xlc.Offset(0, lngColumn).Value
Next lngColumn
rst.Update
Set xlc = xlc.Offset(1, 0)
Loop
rst.Close
Set rst = Nothing
dbs.Close
Set dbs = Nothing
Set xlc = Nothing
Set xls = Nothing
xlw.Close False
Set xlw = Nothing
If blnEXCEL = True Then xlx.Quit
Set xlx = Nothing
Üstteki kod, Access uygulamanızla aynı dizindeki exceldokuman.xlsx isimli Excel belgesinin Sayfa1 sayfasındaki verileri, tbl_tablo1 isimli tabloya aktarır.
Öncelikle teşekkürler Ozan bey.. Peki şöyle yapabilmem mümkünmüdür? Mesela
Access database dosyam crystal.mbd ve Sayfa1 tablosu var.. Alacağım dosyada donemoncesi.xlsx ve Sayfa1 ya da herhangi bir sayfa... Bu verilerin hepsini alıp crystal.mdb de bulunan Sayfa1 database'ine eklemesi mümkünmüdür?
(05/03/2020, 13:50)berduş yazdı: Sayın incsoft açtığınız 3 konu da bir biriyle ilişkili. takip açısından bir soruyu sorduğunuzda alınan cevap sorunlu ise lütfen aynı konu altında sorunuza devam edin farklı bir sorunsa yeni konu açın.
Ve lütfen açtığınız her konuya olumlu ya da olumsuz geri dönün.
https://accesstr.net/konu-excelden-veri-...#pid163964 bu bağlantıda 4 farklı yöntemle excelden accesse veri aktarılmış, benim tavsiyem 4. yöntemi uygulamanızdır.
Temel mantık:
1 - ilgili Excel dosyası geçici olarak oluşturulan "TmpTablo"'na bağlanıyor
2 - oluşturulan bu geçici tablodaki veriler "insert" sorgusu kullanılarak istenilen tabloya ekleniliyor.
çalışmanızı eklerseniz çözüm bulmak kolaylaşır
iyi çalışmalr
Kusura bakmayın onu unuttum hocam
o mesajda verdiğim bağlantıyı inceleyebildiniz mi?
Yahya beyin de sorunu hemen hemen aynıydı, eğer tüm
Excel dosyalarında kullanılan şablon aynıysa orda kullanılan 4. yöntem işinize yarayabilir.
17. sayfadaki 98. mesaj