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

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,042
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

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,042
Excel Vers. ve Dili
Office 2013 İngilizce
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.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Verileri sayfadan alarak kapalı dosyaya yazdırabilirsiniz....

.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Evet, mümkün ... SQL'de "Insert Into" kullanacaksınız.


.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,042
Excel Vers. ve Dili
Office 2013 İngilizce

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
"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:

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,042
Excel Vers. ve Dili
Office 2013 İngilizce
"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

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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:

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,042
Excel Vers. ve Dili
Office 2013 İngilizce
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

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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....

.
 
Üst