Skip to main content

AccessTr.neT


excelden access veri aktarımı

excelden access veri aktarımı

Çözüldü #1
merhabalar yardımcı olursanız sevinirim
excel den Access tablosuna bilgi akarmak için aşagıdakı kodu kullanıyorum. Excel de li sutun harfini dinamik yapmak istiyorum. yani excelden bilgi alırken "cinsi " kısmı a1 de de olabilir d1 de de olabilir bunu form üzerinden seçmek istiyorum. hangi alanlara hangi verinin aktarılacagını form üzerinden secerek karar vermek istiyorum ama başamadım. lütfen yardımcı olurmusunuz eksik olan nedir.

ben (i,"A" ) KISMINDAKİ "A" yı form üzerinden liste kutusundan secemk istiyorum.

saygılarımla

KOD :

Private Sub Komut4_Click()
Dim fDialog As Office.FileDialog
Dim varFile As Variant
Dim senel As String
On Error GoTo EXCELDENAL_Err

Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

With fDialog


.AllowMultiSelect = False


.Title = "Lütfen Aktaracacağınıx Bilgilerin Bulunduğu Excel Dosyasını Seçin"


.Filters.Clear
.Filters.Add "Excel 2003", "*.xls"
.Filters.Add "Excel 2003", "*.xlsx"
.Filters.Add "All Files", "*.*"


If .Show = True Then


For Each varFile In .SelectedItems

senel = varFile
Dim sonsatirno As Integer
Dim crt As String
Dim kacadet As Integer
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(adnan)
Set xlSheet = xlBook.Worksheets(1)

Dim myRec As DAO.Recordset
sonsatirno = xlSheet.Range("A65536").End(xlUp).Row

Set myRec = CurrentDb.OpenRecordset("tbl_stok")

For i = 1 To sonsatirno
crt = xlSheet.Cells(i, Me.Forms!aktar!cinsi)
If Len(DLookup("cinsi", "tbl_stok", "cinsi='" & crt & "'")) > 0 Then
MsgBox crt & " " & " alanı mükerrer kayıt olduğundan kaydedilmedi"
Else
myRec.AddNew
BU KISIMADA SORUNUN VAR..
myRec.Fields("cinsi") = xlSheet.Cells(i, "A")

TIRNAK İÇİNDE HARF YAZINCA OLUYOR AMA FORM ÜZERİNDEN SECTIGIM HARIFİ TANIMLAYINCA OLMUYOR

myRec.Fields("cinsi") = xlSheet.Cells(i, Me.Forms!aktar!cinsi)
myRec.Fields("birimi") = xlSheet.Cells(i, Me.Forms!aktar!birimi)

myRec.Update
kacadet = kacadet + 1
End If
Next
xlApp.Visible = True
xlApp.Quit
Set xlApp = Nothing
If kacadet > 0 Then MsgBox kacadet & " " & "Yeni Kayıt Eklendi"
Next
Else
MsgBox "Vazgeçildi."
End If
End With
EXCELDENAL_Exit:
Exit Sub

EXCELDENAL_Err:
MsgBox Error$
Resume EXCELDENAL_Exit
End Sub
Cevapla
Çözüldü #2
formdan alacağın veriyi tek yada çift tırnak içine alman gerekiyor.
Cevapla
Çözüldü #3
İlgili 2 satırı aşağıdaki şekilde değiştirip deneyin.

myRec.Fields("cinsi") = xlSheet.Cells(i, """" & Me.Forms!aktar!cinsi & """")
myRec.Fields("birimi") = xlSheet.Cells(i, """" & Me.Forms!aktar!birimi & """")
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla
Çözüldü #4
malesef yine olmadı bunu denemiştim Img-cray type mismatch hatasi veriyor surekli.. başka bir çözüm varmı acaba . teşekkürler
Cevapla
Çözüldü #5
Bu satırlardan önce msgbox ile gelen değerlere bakar mısınız?
Doğru değerlerin geldiğine emin olalım.

Msgbox Me.Forms!aktar!cinsi
Msgbox Me.Forms!aktar!birimi

Bu da olmazsa, örnek Access dosyası ve Excel dosyası yollayın ki,
bizde sorunu tam olarak görüp, çözüp üretmeye çalışalım.
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla
Çözüldü #6
"type mismatch" hatası deyince aklıma geldi, çözümü buldum.
Formdan gelen değeri Cstr ile çevirerek string tipine çevirmek gerekiyor.

İlgili satırları aşağıdaki şekilde değiştirin, çalışacaktır.

myRec.Fields("cinsi") = xlSheet.Cells(i, Cstr(Me.Forms!aktar!cinsi))
myRec.Fields("birimi") = xlSheet.Cells(i, Cstr(Me.Forms!aktar!birimi))
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task