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 :
Visual Basic Code
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.

Visual Basic Code
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.

Visual Basic Code
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.

Visual Basic Code
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