• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

rst.update: run-time error -2147217887(80040e21)

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,202
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Kapalı bir dosyaya veri eklemeye çalışırken aşağıdaki kodda;

rst.update satırında bu hatanın verme nedeni neden olabilir?

run-time error -2147217887(80040e21)

Kod:
Sub Example()
Dim yol As String
Dim myFile As String
Dim str As String
Dim strSql As String

yol = ThisWorkbook.Path
myFile = yol & "\Output.xlsx"

str = Sheets("Ado").Range("A2").Value
strSql = "Select * From [Sayfa1$A1:K1]"

    Call ClosedWB(myFile, strSql, str)
    
End Sub

 
Sub ClosedWB(WBFullName As String, SQL As String, NewValue As String)
    Dim conn As New Connection, rs As New Recordset

    conn.Open "Provider=microsoft.ace.oledb.12.0;" & _
    "Data Source=" & WBFullName & _
    ";Extended Properties=""Excel 12.0;HDR=NO;"""
    
    rs.Open SQL, conn, 1, 3

    rs.AddNew

    rs.Fields(0).Value = "B1"
    rs.Fields(1).Value = "B2"
    rs.Fields(2).Value = "B3"
    
    rs.Update
    
    rs.Close: conn.Close
    
End Sub

ilginize şimdiden teşekkürler,
iyi çalışmalar.
 

Ekli dosyalar

  • Mesaj.JPG
    Mesaj.JPG
    19.6 KB · Görüntüleme: 5
c
Excel bir veritabanı uygulaması olmadığı için ADO bazı durumlarda sorun çıkarmaktadır.

Bu sebeple veritabanı olarak Access tercih edebilirsiniz.

Verileri yönetmek için Access'i veya Excel'i kullanma
Korhan Hocam ilginize teşekkürler,
bu arada sorunu çözdüm, hata mesajı konusunda sıkıntı kalmadı.

kapalı dosyaya kayıt ekleme konusunun devamında; müsaade ederseniz yeni bir şey sormak istiyorum
Aşağıdaki kodla "CompanyName", "Address", "City" alanlarının altına "A1", "Road1", "B1" verilerini tek satır ekleme yapabiliyoruz.

A1, Road1, B1
A2 Road2, B2
A3, Road3, B3
A4, Road4, B4
A5, Road5, B5

.....

gibi 2 boyutlu bir dizi oluşturarak çoklu satırı kapalı dosyaya nasıl ekleyebiliriz?

Kod:
Sub ClosedWB(WBFullName As String, SQL As String)
    Dim conn As New Connection, rs As New Recordset
    Dim i As Byte
    Dim varfields As Variant
    Dim varValues As Variant
    
    conn.Open "Provider=microsoft.ace.oledb.12.0;" & _
    "Data Source=" & WBFullName & _
    ";Extended Properties=""Excel 12.0;HDR=YES;"""
    
    rs.Open SQL, conn, 1, 3

 varfields = Array("CompanyName", "Address", "City")
 varValues = Array("A1", "Road1", "B1")

 rs.AddNew varfields, varValues
 rs.Update

    rs.Close: conn.Close

End Sub

iyi Çalışmalar.
 
Verileri sayfadan alarak kapalı dosyaya yazdırabilirsiniz....

.
 
Evet, mümkün ... SQL'de "Insert Into" kullanacaksınız.


.
 
"VALUES (......., ...., .....)" kullanırsanız satır satır veri aktarırsınız.....

Onun yerine oraya bir SubQuery yerleştirerek tek seferde bütün verileri aktarırsınız....

Örnek;

C#:
    strSQL = "Insert Into [İstatistik$] ([Sıra No], [Adı Soyadı], [Durum]) Select [Sıra No], [Adı Soyadı], [Durum] From [Şubat$] "


Bu SQL komutu ile "Şubat" sayfasından "İstatistik" sayfasına, ilgili alanlardaki tüm veriler aktarılır....

.
 
Son düzenleme:
"VALUES (......., ...., .....)" kullanırsanız satır satır veri aktarırsınız.....

Onun yerine oraya bir SubQuery yerleştirerek tek seferde bütün verileri aktarırsınız....

Örnek;

C#:
    strSQL = "Insert Into [İstatistik$] ([Sıra No], [Adı Soyadı], [Durum]) Select [Sıra No], [Adı Soyadı], [Durum] From [Şubat$] "


Bu SQL komutu ile "Şubat" sayfasından "İstatistik" sayfasına, ilgili alanlardaki tüm veriler aktarılır....

.
Haluk Hocam teşekkürler,
ekli hata mesajını veriyor, Sayfa adını değiştiriyorum yine aynı hata mesajını veriyor.

Kod:
 nSQL = "Insert Into [Sayfa1$] ([CompanyName], [Address], [City]) Select [CompanyName],[Address],[City] From [Subat$] "

    conn.Open "Provider=microsoft.ace.oledb.12.0;" & _
    "Data Source=" & WBFullName & _
    ";Extended Properties=""Excel 12.0;HDR=YES;"""
    
 conn.Execute nSQL

iyi Çalışamalar.
 

Ekli dosyalar

  • Mesaj.JPG
    Mesaj.JPG
    72.7 KB · Görüntüleme: 1
Sayfa adlarına dikkat edin, Şubat / Subat


C#:
Sub Test3()
    Set conn = CreateObject("ADODB.Connection")
   
    conn.Open "Provider= Microsoft.ACE.OLEDB.12.0; Data Source= " & ThisWorkbook.FullName & "; Extended Properties='Excel 12.0; HDR=Yes';"
   
    conn.Execute "Insert Into [Sayfa1$] ([CompanyName], [Address], [City]) Select [CompanyName], [Address], [City] From [Şubat$] "
End Sub


Test.gif


Not: Bundan sonraki sorunuzu ücretli cevaplandırabilirim...

.
 
Son düzenleme:
Sayfa adlarına dikkat edin, Şubat / Subat


C#:
Sub Test3()
    Set conn = CreateObject("ADODB.Connection")
  
    conn.Open "Provider= Microsoft.ACE.OLEDB.12.0; Data Source= " & ThisWorkbook.FullName & "; Extended Properties='Excel 12.0; HDR=Yes';"
  
    conn.Execute "Insert Into [Sayfa1$] ([CompanyName], [Address], [City]) Select [CompanyName], [Address], [City] From [Şubat$] "
End Sub


Ekli dosyayı görüntüle 237256


Not: Bundan sonraki sorunuzu ücretli cevaplandırabilirim...

.
Haluk hocam haklısınız aynı dosya içinde çalışıyor, bir sıkıntı yok; yalnız kapalı olan başka bir dosyaya kaydetmeye çalışınca yine hata mesajı veriyor
Not: Sizin hakkınızı ödeyebilir miyiz Hocam, sen nasıl isterseniz başım üstüne! siz nasıl isterseniz?
 

Ekli dosyalar

Dosyanız virüs uyarısı verdiği için indiremedim...

Aşağıdaki linkte, kapalı dosyaya verileri yazan bir örnek hazırladım.



Not: Forumdaki mesajlara cevap yazarken mesajın altındaki "Cevapla" butonuna değil de, aşağıdaki cevap yazma alanına cevabınızı yazdıktan sonra "Cevap Gönder" butonuna tıklarsanız daha iyi olur, boşuna kalabalık olmaz....

.
 
Geri
Üst