Ejemplo n.º 1
0
        private void button1_Click(object sender, EventArgs e)
        {
            DBFReader dbf = new DBFReader("d:\\skl\\3\\TOVAR.DBF");

            dbf.Open();

            DBFColumn     s    = null;
            List <string> keys = new List <string>();
            int           i;

            for (i = 0; i < 2; i++)
            {
                s = dbf.GetColumn(i);
                keys.Add(s.ColumnName);
            }

            IDataRecord irow;
            string      key;

            Dictionary <string, IDataRecord> data = new Dictionary <string, IDataRecord>();

            for (i = 0; i < dbf.Count; i++)
            {
                irow = (IDataRecord)dbf[i];
                key  = ((DBFRow)irow).GetKey(keys.ToArray());
                data.Add(key, irow);
            }

            dbf.Close();
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            // считывание настроек
            //for (i = 0; i < n; i++)

            string path1 = "D:\\skl\\3",
                   path2 = "D:\\skl\\1";

            string file1 = Path.Combine(path1, "TOVAR.DBF"),
                   file2 = Path.Combine(path2, "TOVAR.DBF");

            DBFReader dbfr1 = new DBFReader(file1),
                      dbfr2 = new DBFReader(file2);

            if (dbfr1.Open())
            {
                int i;
                #region ключевые поля
                DBFColumn     col;
                List <string> keys = new List <string>();

                for (i = 0; i < 2; i++)
                {
                    col = dbfr1.GetColumn(i);
                    keys.Add(col.ColumnName);
                }
                #endregion

                Dictionary <string, byte[]> data1 = dbfr1.ReadData(keys), data2 = null;
                Directory.CreateDirectory(path2);
                // файла нет
                if (!File.Exists(file2))
                {
                    File.Copy(file1, file2);
                }
                else
                {
                    if (dbfr2.Open())
                    {
                        data2 = dbfr2.ReadData(keys);
                    }
                }

                #region синхронизация

                string key;
                byte[] buf1, buf2;
                object obj1, obj2;

                foreach (KeyValuePair <string, byte[]> kvp in data1)
                {
                    key  = kvp.Key;
                    buf1 = kvp.Value;

                    char[] c = dbfr1.Encoding.GetChars(buf1);

                    if (data2.ContainsKey(key))
                    {
                        buf2 = data2[key];

                        for (i = 2; i < dbfr2.ColumnCount; i++)
                        {
                            col = dbfr2.GetColumn(i);

                            obj1 = buf1[col.Size];
                            obj2 = buf2[col.Size];
                            //if (T == typeof(int))  = "System.Convert.ToInt32(row1[i])";
                        }
                    }
                    else
                    {
                        data2.Add(key, buf1);
                    }
                }
                #endregion

                data1.Clear();
                data2.Clear();
                keys.Clear();
            }
            dbfr1.Close();
            dbfr2.Close();

            dbfr1 = null;
            dbfr2 = null;
        }