veritabanı güncelleme hk.

Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Altın Üyelik Bitiş Tarihi
22-12-2019
merhabalar,

Access veritabanında yapılacak değişimlerde nasıl bir yol tavsiye edersiniz?
(her bir kaydın kayıt numarası var ve her verinin bir sıra numarası var)
(kolon sayısı değişken min.20 sütun)

1-örneğin 5 satırlık veriyi listemize çektik düzenledik .
2-aynı şekilde 5 satırlık veriyi çektikten sonra düzeltme ve eklemeler yaptık 10 satır oldu.
3- aynı veriden satır sildik

şu anda kullandığım yöntem;
Düzenleme bitip accese yazma esnasında ilgili kaydı silip yeniden aynı kayıt no ile yazıyorum ( bu çok başarılı değil) bir hatada veriler gidebiliyor)
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,374
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Eğer Recordset Datagrid nesnesine bağlı olsaydı, grid üzerindeki değişiklikler veritabanına kendiliğinden yansırdı. Bunun dışında her operasyon manuel veritabanına yansıtılmak zorunda.


.
 
Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Altın Üyelik Bitiş Tarihi
22-12-2019
Eğer Recordset Datagrid nesnesine bağlı olsaydı, grid üzerindeki değişiklikler veritabanına kendiliğinden yansırdı. Bunun dışında her operasyon manuel veritabanına yansıtılmak zorunda.


.

Datagrid'e veriler sorgu kriterine göre geliyor. "select * from table where..."

Asıl buradaki sorum manuel güncellemeyi nasıl bir kurguda yapmalıyım*
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,374
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Önceki mesajımda belirttiğim gibi, Set Datagrid1.DataSource = rs olarak tek tablodan where kullanımı olsun veya olmasın, primary key de varsa değişiklik veritabanına yansıyacaktır.

Eğer kodlama VBA değil de Visual Studio ise, dataset update back to database gibi kriter ile web araması yapın.


.
 
Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Altın Üyelik Bitiş Tarihi
22-12-2019
Önceki mesajımda belirttiğim gibi, Set Datagrid1.DataSource = rs olarak tek tablodan where kullanımı olsun veya olmasın, primary key de varsa değişiklik veritabanına yansıyacaktır.

Eğer kodlama VBA değil de Visual Studio ise, dataset update back to database gibi kriter ile web araması yapın.


.
bu makaleyi okudum fakat çok da anlayamadim doğrusu , biraz daha araştırayım.



Aynı satır sayısına sahip olduğunda güncellemede sorun yaşamam muhtemelen fakat güncelleme esnasında satır sayısı artarsa orada kodlara ne eklemem gerekir orada kaldım.

Kodlar visual studio'da yazıyorum.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,374
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Kodlar visual studio'da yazıyorum.
Tahmin etmiştim... Ancak soru Makro-VBA başlığı altında gelişi güzel açılınca VBA & ActiveXControl olabileceğini yeğledim.

Açıklamaları dikkatli okursanız aşağıdaki bağlantı amacınıza ulaşmanıza yardımcı olacak.



.
 
Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Altın Üyelik Bitiş Tarihi
22-12-2019
Açıklamaları dikkatli okursanız aşağıdaki bağlantı amacınıza ulaşmanıza yardımcı olacak.
Biraz araştırdıktan sonra işine ne kadar kolay olduğunu anladım. Saatlerce verileri güncellemek için kodlar yazdım.
Fakat aşağıdaki kodlar fazlasıyla işimi görecek gibi. Sorgudaki kritere göre veriyi çekip hangi satırda değişiklik yaparsam yapayım düzeltme ekleme vs yapıyor.

Teşekkürler önerileriniz için @Zeki Gürsoy

Kod:
Imports System.Data.OleDb

Public Class Form1

    Dim myDA As OleDbDataAdapter

    Dim myDataSet As DataSet

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;data source=|DataDirectory|\MYDB.mdb")  ' Use relative path to database file

        Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM CARTH001 WHERE KAYITNO = 1", con)

        con.Open()
        Dim dt = New DataTable()
        myDA = New OleDbDataAdapter(cmd)

        'Here one CommandBuilder object is required.

        'It will automatically generate DeleteCommand,UpdateCommand and InsertCommand for DataAdapter object 

        Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(myDA)

        myDataSet = New DataSet()

        myDA.Fill(myDataSet, "CARTM001")

        DataGridView1.DataSource = myDataSet.Tables("CARTM001").DefaultView

        con.Close()

        con = Nothing

    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Me.Validate()

        Me.myDA.Update(Me.myDataSet.Tables("CARTM001"))

        Me.myDataSet.AcceptChanges()

    End Sub

End Class
 
Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Altın Üyelik Bitiş Tarihi
22-12-2019
Kodlar birebir tek tablo ile çalışınca sorun yapmıyor fakat bir sorun var,
mevcut select * koldarına ek olarak farklı tablolardan sütun eklendiğinde kaydederken hata veriyor

Kod:
Tutarlılık ihlali: UpdateCommand, beklenen 1 kaydın 0 kaydını etkiledi.

örnek select komutu;

Kod:
 Dim cmd As OleDbCommand = New OleDbCommand("SELECT A.*,A.TUTAR+2 FROM CARTH001 A WHERE KAYITNO = 1", con)
 
Üst