Konu Araçları | Konu Seçenekleri | Gösterim Stili
Tarih
29/09/2018 23:47
Konu Sahibi
mfyildiz
Yorumlar
3
Okunma
274
Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 0/5 - 0 oy
Kullanici Avatari

mfyildiz


MU.... FA.... YI....
 Belirtilmemiş
 2
 1
 29/09/2018
0
 
 
 
 18/10/2018,19:35
Merhaba Accesde Bir Tablodan Diğer Tabloya Veri Aktarımında Performans Sorunu Yaşıyorum. 50 satıra kadar veride sıkıntı olmuyor fakat 100 den fazla satır olması durumunda işlem çok uzun sürüyor. Aşağıdaki kod ile yapmak istediğim işlemin bir kısa yolu var mı?.
Ayrıca datagridviev'e ikinci bir veri yüklemesinde satırlar mükerrer görünüyor. Genel olarak işlenmemiş veriyi tekrar yüklesem bile datagrid mükerrer gösteriyor.  Sadd

Kodum Aşağıdadır ve Projem Ektedir. Yardımlarınızı Rica Ediyorum. 


Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
 public string patch = Application.StartupPath + "\\data.mdb";


        private void Form1_Load(object sender, EventArgs e)
        {
            billload();
            periodload();
        }

        public void periodload()
        {
            OleDbConnection con_kdv = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" + patch);
            OleDbDataAdapter da_kdv = new OleDbDataAdapter("SElect *from period", con_kdv);
            DataSet ds_kdv = new DataSet();
            con_kdv.Open();
            da_kdv.Fill(ds_kdv, "period");
            periodgrid.DataSource = ds_kdv.Tables["period"];
            con_kdv.Close();

        }


        public void billload()
        {
            OleDbConnection faturayuklecon = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" + patch);
            OleDbDataAdapter faturayukleda = new OleDbDataAdapter("SElect *from bill", faturayuklecon);
            DataSet faturayukleds = new DataSet();
            faturayuklecon.Open();
            faturayukleda.Fill(faturayukleds, "bill");
            billgrid.DataSource = faturayukleds.Tables["bill"];
            faturayuklecon.Close();

            int ilkonsay;
            ilkonsay = billgrid.RowCount; int bi = ilkonsay - 1;
            rowlabel.Text = bi.ToString();
        }


        private void button1_Click(object sender, EventArgs e)
        {
            periodemtyrowadd();
        }

        public void periodemtyrowadd()
        {
            OleDbConnection connection = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" + patch);
            connection.Open();

            OleDbCommand kdvsil = new OleDbCommand("DELETE FROM period WHERE ID", connection);
            kdvsil.ExecuteNonQuery();

            try
            {
                for (int i = 0; i < billgrid.RowCount; i++)
                {
                    if (billgrid.Rows[i] != null && billgrid.Rows[i].Cells[1].Value != null)
                    {
                        DateTime d = DateTime.Parse(billgrid.Rows[i].Cells[1].Value.ToString());
                        InsertRow(d.ToString("dd.MM.yyyy"));
                    }
                }
            }
            catch
            {
                MessageBox.Show("Bill Date Sorting Error ...!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            connection.Close();

            perioddublicatedrowclean();
            periodload();
        }


            void InsertRow(string cell)
            {
                DateTime month;
                string ncell = cell.Replace('.', '-');
                if (DateTime.TryParseExact(ncell, "dd-MM-yyyy", null, DateTimeStyles.None, out month))
                {
                    InsertMonth(month.AddMonths(-1));
                    InsertMonth(month);
                }
            }

            void InsertMonth(DateTime month)
            {
                using (var conn = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" + patch))
                using (var cmd1 = conn.CreateCommand())

                {
                    cmd1.Connection.Open();
                    cmd1.CommandText = "insert into period (a) values (?)";
                    cmd1.Parameters.AddWithValue("?", month.ToString("MM/yyyy").Replace('.', '/'));
                    cmd1.ExecuteNonQuery();
                }
            }

            int kdvsil1, kdvsil2;

            public void perioddublicatedrowclean()
            {
                OleDbConnection con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" + patch);
                DataSet ds = new DataSet();
                OleDbDataAdapter da = new OleDbDataAdapter("select * from period", con);
                con.Open();
                da.Fill(ds, "period");
                for (int i = 0; i < ds.Tables["period"].Rows.Count; i++)
                {
                    DataRow row = ds.Tables["period"].Rows[i];
                    kdvsil2++;
                    for (int j = kdvsil2; j < ds.Tables["period"].Rows.Count; j++)
                    {
                        DataRow row2 = ds.Tables["period"].Rows[j];

                        if (row.ItemArray.GetValue(1).ToString() == row2.ItemArray.GetValue(1).ToString())
                        {
                            if (row.ItemArray.GetValue(3).ToString() == row2.ItemArray.GetValue(3).ToString())
                            {
                                kdvsil1 = int.Parse(row2.ItemArray.GetValue(0).ToString());
                                kdvsila(kdvsil1);
                            }
                        }
                    }
                }
                con.Close();
            }


            public void kdvsila(int num)
            {
                OleDbConnection con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" + patch);
                con.Open();
                OleDbCommand c = new OleDbCommand("Delete from period where ID =?", con);
                c.Parameters.AddWithValue("ID", num);
                c.ExecuteNonQuery();
                con.Close();
            }


Ek Dosyalar
.zip   dataperiodtest1.zip(Dosya Boyutu: 193,38 KB / İndirme Sayısı: 4)

Kullanici Avatari

mehmetdemiral


ME.... DE....
 53
 4.912
 213
 30/10/2008
 Samsun
 Öğretmen
 Ofis 2013 32 Bit
 11/10/2018,02:06
Sorunuz Access sorusu değil. Yazılım platformunuza uygun olan yer olan .net bölümüne taşıyorum.


İnadına, ille de Accesstr.net...

Kullanici Avatari

emir ustaoğlu


YU.... EM.... US....
 25
 176
 28
 12/08/2015
65
 Hatay
 Muhasebe Sorumlusu
 Ofis 2013 64 Bit
 17/10/2018,09:13
Sayın mfyildiz;

Kullanmış olduğunuz kod yapısı performans açısından bir çok sorun yaratabilecek bir yapıda


SQL Code
INSERT StokSatis (StokAdi, StokRengi)  SELECT StokAdi ,StokRengi FROM Stoklar 


Şeklinde bor kod yapısı ile çok daha hızlı ve performanslı bir şekilde tablolar arası kayıt kopyalayabilirsiniz.

İsterseniz kodu WHERE yapısı ile sadece belirlediğiniz kriterlere sahip kayıtların kopyalanmasını sağlayacak şekilde çalıştırabilirsiniz.

Kodu denemenizi ve olumlu/olumsuz dönüş yapmanızı rica ederim.


Dünyada Yetirince Anlaşılır Dile Konuşan İnsanlar Var Birazcık da Anlaması İçin Düşünmesi Gerekiyor İnsanların

Kullanici Avatari

mfyildiz


MU.... FA.... YI....
 Belirtilmemiş
 2
 1
 29/09/2018
0
 
 
 
 18/10/2018,19:35
Merhaba Verdiğiniz Örnekteki Kod Yapısından Veriler Olduğu Gibi Bir Tablodan başka tabloya basit bir şekilde aktarmakta kullanılmaktadır. 
1. tablonun tarih içeren 2. sütunundaki satırları 2 tabloya aktarırken örneğin "28.12.2015" tarihi için "11/2015" satırı ve sonra "12/2015" satırı ekleyecek ve daha sonra bu satırlardan mükerrer olanları silinecek.

örnek:
1. tablo sütun a (veri alınacak sütun)
18.06.2018
15.06.2018
10.08.2018
30.09.2018

2. tablo sütun a (veri yazılacak - satır eklenecek sütun)
05/2018
06/2018
07/2018
08/2018
09/2018

yukarıdaki işlemi hızlı bir şekilde yapabilecek yöntem yok mu ?




Konuyu Okuyanlar: 1 Ziyaretçi

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Veritabanından Charta Gelen İstatistik Sorunu Mehmet Paçal 1 123 09/10/2018, 09:32
Son Yorum: emir ustaoğlu
  Vb.net Veritabanı İstatistik sorunu white shade 3 597 21/05/2017, 16:01
Son Yorum: alpeki99
  Stok Çalıştırma Sorunu tugbacan 0 330 14/04/2017, 00:24
Son Yorum: tugbacan
Video VB 2010 Dinamik Menü Oluşturma Sorunu sokrates11 3 1.510 17/02/2015, 09:30
Son Yorum: sokrates11
  word aktarmada tablo silme sorunu kokotuna 1 1.316 06/01/2015, 15:59
Son Yorum: kokotuna

Türkçe Çeviri: MCTR, Yazılım: MyBB, © 2002-2018 MyBB Group.
123444