예제 #1
0
        public void checkDataType_N()
        {
            Decimal writtenValue;

            using (
                Stream fos =
                    File.Open(TestPath(),
                              FileMode.OpenOrCreate,
                              FileAccess.ReadWrite))
                using (var writer = new DBFWriter())
                {
                    var field = new DBFField("F1", NativeDbType.Numeric, 15, 0);
                    writer.Fields = new[] { field };

                    writtenValue = 123456789012345L;
                    writer.AddRecord(writtenValue);
                    writer.Write(fos);
                }
            using (
                Stream fis =
                    File.Open(TestPath(),
                              FileMode.Open,
                              FileAccess.Read))
                using (var reader = new DBFReader(fis))
                {
                    var readValues = reader.NextRecord();

                    Assert.That(readValues[0], EqualTo(writtenValue), "Written Value Equals Read");
                }
        }
예제 #2
0
        public void checkLongCharLengthWithClipper()
        {
            var    fieldLength = 750;
            string writtenValue;

            using (
                Stream fos =
                    File.Open(TestClipLongPath(),
                              FileMode.OpenOrCreate,
                              FileAccess.ReadWrite))
            {
                var writer = new DBFWriter();
                var field  = new DBFField("F1", NativeDbType.Char, fieldLength);
                writer.Fields = new[] { field };

                writtenValue = GetCharacters(fieldLength);
                writer.AddRecord(writtenValue);
                writer.Write(fos);
            }
            using (
                Stream fis =
                    File.Open(TestClipLongPath(),
                              FileMode.OpenOrCreate,
                              FileAccess.ReadWrite))
            {
                var reader = new DBFReader(fis);
                Assert.That(reader.Fields.First().FieldLength, EqualTo(fieldLength));
                var readValues = reader.NextRecord();

                Assert.That(readValues[0], EqualTo(writtenValue), "Written Value not equaling Read");
            }
        }
예제 #3
0
        public void checkDataType_M()
        {
            var       fieldLength = 2400;
            MemoValue writtenValue;

            using (Stream fos = File.Open(TestMemoPath(), FileMode.OpenOrCreate, FileAccess.ReadWrite))
                using (var writer = new DBFWriter
                {
                    DataMemoLoc = Path.ChangeExtension(TestMemoPath(), "DBT")
                })
                {
                    var field = new DBFField("F1", NativeDbType.Memo);
                    writer.Fields = new[] { field };

                    writtenValue = new MemoValue(GetCharacters(fieldLength));
                    writer.AddRecord(writtenValue);
                    writer.Write(fos);
                }
            using (Stream fis = File.Open(TestMemoPath(), FileMode.OpenOrCreate, FileAccess.ReadWrite))
                using (var reader = new DBFReader(fis)
                {
                    DataMemoLoc = Path.ChangeExtension(TestMemoPath(), "DBT")
                })
                {
                    var readValues = reader.NextRecord();

                    Assert.That(readValues[0], EqualTo(writtenValue), "Written Value not equaling Read");
                }
        }
예제 #4
0
파일: Helper.cs 프로젝트: wee2tee/MPA3
        public static ManageDataResult AddInvoiceRecord(Inv inv_to_add)
        {
            if (!File.Exists("inv.dbf"))
            {
                throw new FileNotFoundException("File \"inv.dbf\" not found!");
            }

            try
            {
                using (Stream stream = File.Open("inv.dbf", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read))
                {
                    var reader = new DBFReader(stream);
                    reader.CharEncoding = Encoding.GetEncoding(874);
                    List <Inv> invoice_list = new List <Model.Inv>();

                    var writer = new DBFWriter(stream);
                    for (int i = 0; i < reader.RecordCount; i++)
                    {
                        try
                        {
                            object[] obj = reader.NextRecord();

                            // add existing record first
                            writer.AddRecord((string)obj[0], (string)obj[1], (string)obj[2]);
                        }
                        catch (Exception)
                        {
                            break;
                        }
                    }

                    // add a target record
                    writer.AddRecord(inv_to_add.docnum, inv_to_add.email, inv_to_add.status);
                }
                return(new ManageDataResult {
                    success = true, message = "success"
                });
            }
            catch (Exception ex)
            {
                //Console.WriteLine("File is in use by another process.");
                return(new ManageDataResult {
                    success = false, message = ex.Message
                });
            }
        }
예제 #5
0
파일: Report.cs 프로젝트: iiSergey/AppPosht
        public Task SaveAsync()
        {
            return(Task.Run(() =>
            {
                Status = ReportStatus.ReportStatusSaving;
                string directoryNameOut = Settings.Default.DirectoryNameOut;
                using (var dbf = new DBFWriter
                {
                    Fields = new[]
                    {
                        new DBFField("ls", NativeDbType.Char, 12),
                        new DBFField("ls_old", NativeDbType.Char, 12),
                        new DBFField("fio", NativeDbType.Char, 50),
                        new DBFField("adress", NativeDbType.Char, 100),
                        new DBFField("paymonth", NativeDbType.Numeric, 2),
                        new DBFField("payyear", NativeDbType.Numeric, 4),
                        new DBFField("sum", NativeDbType.Numeric, 14, 2),
                        new DBFField("date", NativeDbType.Date),
                        new DBFField("eval0", NativeDbType.Numeric, 12, 2),
                        new DBFField("eval1", NativeDbType.Numeric, 12, 2),
                        new DBFField("date_eval1", NativeDbType.Date),
                        new DBFField("rgc_format", NativeDbType.Numeric, 1)
                    },
                    CharEncoding = Encoding.GetEncoding("cp866") //koi8-u
                })
                {
                    foreach (var piple in Piples)
                    {
                        dbf.AddRecord(piple.Number,
                                      "",
                                      piple.FullName,
                                      piple.Adress,
                                      piple.DatePay.Month,
                                      piple.DatePay.Year,
                                      piple.Sum,
                                      piple.DatePay,
                                      0,
                                      0,
                                      piple.DatePay,
                                      0);
                    }
                    using (
                        Stream fos =
                            File.Open(directoryNameOut + "0500_polgaz_" + DateReport.ToString("dd.MM.yyyy") + ".dbf",
                                      FileMode.Create,
                                      FileAccess.Write))
                    {
                        dbf.Write(fos);
                    }
                }

                Status = ReportStatus.ReportStatusSaved;
            }));
        }
예제 #6
0
        public void WriteSample([CallerMemberName] string name = null)
        {
            var field = new DBFField {
                Name = "F1", DataType = NativeDbType.Numeric
            };
            var writer = new DBFWriter {
                Fields = new[] { field }
            };

            writer.AddRecord(3);
            using (
                Stream fos =
                    File.Open(TestPath(name),
                              FileMode.OpenOrCreate,
                              FileAccess.ReadWrite))
            {
                writer.Write(fos);
            }
        }
예제 #7
0
        public void checkProxy()
        {
            var    fieldLength = 2400;
            string writtenValue;

            using (
                Stream fos =
                    File.Open(TestSelectPath(),
                              FileMode.OpenOrCreate,
                              FileAccess.ReadWrite))
            {
                using (var writer = new DBFWriter {
                    DataMemoLoc = Path.ChangeExtension(TestSelectPath(), "DBT")
                })
                {
                    ;
                    var field  = new DBFField("F1", NativeDbType.Memo);
                    var field2 = new DBFField("F2", NativeDbType.Numeric, 10);
                    var field3 = new DBFField("F3", NativeDbType.Char, 10);
                    writer.Fields = new[] { field, field2, field3 };

                    writtenValue = "alpha";
                    writer.AddRecord(new MemoValue(GetCharacters(fieldLength)), 10, writtenValue);
                    writer.Write(fos);
                }
            }
            using (
                Stream fis =
                    File.Open(TestSelectPath(),
                              FileMode.OpenOrCreate,
                              FileAccess.ReadWrite))
            {
                using (var reader = new DBFReader(fis)
                {
                    DataMemoLoc = Path.ChangeExtension(TestSelectPath(), "DBT")
                })
                {
                    var readValues = reader.AllRecords <ITestInterface>();

                    Assert.That(readValues.First().F3, StartsWith(writtenValue), "Written Value not equaling Read");
                }
            }
        }
예제 #8
0
        public void checkSelectDynamic()
        {
            var    fieldLength = 2400;
            string writtenValue;
            string writtenMemo;

            using (
                Stream fos =
                    File.Open(TestSelectPath(),
                              FileMode.OpenOrCreate,
                              FileAccess.ReadWrite))
                using (var writer = new DBFWriter
                {
                    DataMemoLoc = Path.ChangeExtension(TestSelectPath(), "DBT")
                })
                {
                    var field  = new DBFField("F1", NativeDbType.Memo);
                    var field2 = new DBFField("F2", NativeDbType.Numeric, 10);
                    var field3 = new DBFField("F3", NativeDbType.Char, 10);
                    writer.Fields = new[] { field, field2, field3 };

                    writtenValue = "alpha";
                    writtenMemo  = GetCharacters(fieldLength);
                    writer.AddRecord(new MemoValue(writtenMemo), 10, writtenValue);
                    writer.Write(fos);
                }
            using (
                Stream fis =
                    File.Open(TestSelectPath(),
                              FileMode.OpenOrCreate,
                              FileAccess.ReadWrite))
                using (var reader = new DBFReader(fis)
                {
                    DataMemoLoc = Path.ChangeExtension(TestSelectPath(), "DBT")
                })
                {
                    reader.SetSelectFields("F1", "F3");
                    var readValues = reader.DynamicAllRecords().First();

                    Assert.That(readValues.F1.ToString(), EqualTo(writtenMemo), "Written Value not equaling Read");
                    Assert.That(readValues.F3, EqualTo(writtenValue), "Written Value not equaling Read");
                }
        }
예제 #9
0
        public void checkDynamicProxyWhere()
        {
            var    fieldLength = 2400;
            string writtenValue;

            using (
                Stream fos =
                    File.Open(TestSelectPath(),
                              FileMode.OpenOrCreate,
                              FileAccess.ReadWrite))
                using (var writer = new DBFWriter
                {
                    DataMemoLoc = Path.ChangeExtension(TestSelectPath(), "DBT")
                })
                {
                    var field  = new DBFField("F1", NativeDbType.Memo);
                    var field2 = new DBFField("F2", NativeDbType.Numeric, 10);
                    var field3 = new DBFField("F3", NativeDbType.Char, 10);
                    writer.Fields = new[] { field, field2, field3 };

                    writtenValue = "alpha";
                    writer.AddRecord(new MemoValue(GetCharacters(fieldLength)), 10, writtenValue);

                    writer.AddRecord(new MemoValue(GetCharacters(fieldLength)), 12, "beta");

                    writer.Write(fos);
                }

            using (var reader = new DBFReader(TestSelectPath())
            {
                DataMemoLoc = Path.ChangeExtension(TestSelectPath(), "DBT")
            })
            {
                var readValues = reader.DynamicAllRecords();

                Assert.That(Equals(readValues.Count(), 2), "All Records not matching");
            }

            using (var reader = new DBFReader(TestSelectPath())
            {
                DataMemoLoc = Path.ChangeExtension(TestSelectPath(), "DBT")
            })
            {
                var readValues = reader.DynamicAllRecords(whereColumn: "F2", whereColumnEquals: 10);

                Assert.That(Equals(readValues.Count(), 1), "All Records not matching");
            }

            using (var reader = new DBFReader(TestSelectPath())
            {
                DataMemoLoc = Path.ChangeExtension(TestSelectPath(), "DBT")
            })
            {
                var readValues = reader.DynamicAllRecords(whereColumn: "F2", whereColumnEquals: 12);

                Assert.That(Equals(readValues.Count(), 1), "All Records not matching");
            }
            using (var reader = new DBFReader(TestSelectPath())
            {
                DataMemoLoc = Path.ChangeExtension(TestSelectPath(), "DBT")
            })
            {
                var readValues = reader.DynamicAllRecords(whereColumn: "F2", whereColumnEquals: 13);

                Assert.That(Equals(readValues.Count(), 0), "All Records not matching");
            }
        }
예제 #10
0
 /// <summary>
 /// Adds the record.
 /// </summary>
 /// <param name="writer">The writer.</param>
 /// <param name="value">The value.</param>
 public static void AddRecord(DBFWriter writer, IDBFIntercepter value)
 {
     writer.AddRecord(writer, value);
 }
예제 #11
0
        public byte[] GenerateDbf(DtoTimeSheet timeSheet)
        {
            var fields = new List <DBFField>
            {
                new DBFField("IdTs", NativeDbType.Numeric, 50, 0),          //Идентификатор табеля
                new DBFField("TsDateSt", NativeDbType.Date),                //Табель с
                new DBFField("TsDateEnd", NativeDbType.Date),               //Табель по
                new DBFField("TsDateComp", NativeDbType.Date),              //Дата составления табеля
                new DBFField("IdDep", NativeDbType.Numeric, 50, 0),         //Идентификатор структурного подразделения
                new DBFField("DepSName", NativeDbType.Char, 350, 0),        //Короткое название структ. подразделения
                new DBFField("DepFName", NativeDbType.Char, 350, 0),        //Полное название структ подразделение
                new DBFField("ETabNum", NativeDbType.Char, 350, 0),         //Табельный номер сотрудника
                new DBFField("IdEmployee", NativeDbType.Numeric, 50, 0),    //Идентификатор сотрудника
                new DBFField("IdFactStaf", NativeDbType.Numeric, 50, 0),    //Идентификатор фактической ставки сотр.
                new DBFField("EFirstname", NativeDbType.Char, 50, 0),       //Фамилия
                new DBFField("ELastName", NativeDbType.Char, 50, 0),        //Имя
                new DBFField("EPatronymi", NativeDbType.Char, 50, 0),       //Отчество
                new DBFField("IdPost", NativeDbType.Numeric, 50, 0),        //Идентификатор должности
                new DBFField("EPostname", NativeDbType.Char, 50, 0),        //Название должности
                new DBFField("EStufRate", NativeDbType.Float, 50, 0),       //Ставка
                new DBFField("IdShedule", NativeDbType.Numeric, 50, 0),     //Идентификатор графика работы
                new DBFField("SheduleNam", NativeDbType.Char, 50, 0),       //Название графика работы
                new DBFField("RecDate", NativeDbType.Date),                 //Дата
                new DBFField("IdDayStat", NativeDbType.Numeric, 50, 0),     //Идентификатор статуса дня
                new DBFField("RecStatus", NativeDbType.Char, 50, 0),        //Статус дня
                new DBFField("IdRec", NativeDbType.Char, 50, 0),            //Идентификатор записи табеля
                new DBFField("RecHours", NativeDbType.Float, 50, 0),        //Отработано часов
            };

            var writer = new DBFWriter {
                Fields = fields.ToArray(), CharEncoding = Encoding.Default
            };
            var addRecList1 = new List <object>
            {
                timeSheet.IdTimeSheet,
                timeSheet.DateBegin,
                timeSheet.DateEnd,
                timeSheet.DateComposition,
                timeSheet.Department.IdDepartment,
                timeSheet.Department.DepartmentSmallName,
                timeSheet.Department.DepartmentFullName
            };
            var addRecList2 = new List <object>();
            var addRecList3 = new List <object>();

            foreach (var empl in timeSheet.Employees)
            {
                addRecList2.Clear();
                addRecList2.AddRange(addRecList1.ToArray());
                addRecList2.Add(empl.FactStaffEmployee.ItabN);
                addRecList2.Add(empl.FactStaffEmployee.IdEmployee);
                addRecList2.Add(empl.FactStaffEmployee.IdFactStaff);
                addRecList2.Add(empl.FactStaffEmployee.Surname);
                addRecList2.Add(empl.FactStaffEmployee.Name);
                addRecList2.Add(empl.FactStaffEmployee.Patronymic);
                addRecList2.Add(empl.FactStaffEmployee.Post.IdPost);
                addRecList2.Add(empl.FactStaffEmployee.Post.PostFullName);
                addRecList2.Add(empl.FactStaffEmployee.StaffRate);
                addRecList2.Add(empl.FactStaffEmployee.WorkShedule.IdWorkShedule);
                addRecList2.Add(empl.FactStaffEmployee.WorkShedule.WorkSheduleName);
                foreach (var rec in empl.Records)
                {
                    addRecList3.Clear();
                    addRecList3.AddRange(addRecList2.ToArray());
                    addRecList3.Add(rec.Date);
                    addRecList3.Add(rec.DayStays.IdDayStatus);
                    addRecList3.Add(rec.DayStays.SmallDayStatusName);
                    addRecList3.Add(rec.IdTimeSheetRecord.ToString());
                    addRecList3.Add(rec.JobTimeCount);
                    writer.AddRecord(addRecList3.ToArray());
                }
            }
            var fos = new MemoryStream();

            {
                writer.Write(fos);
            }
            return(fos.ToArray());
        }
예제 #12
0
        //private TimeSheetModel[] _models;
        //public TimeSheetToDbf(TimeSheetModel[] models)
        //{
        //    _models = models;
        //}

        public byte[] GenerateDbf(TimeSheetModel[] models)
        {
            var fields = new List <DBFField>
            {
                new DBFField("IdDep", NativeDbType.Numeric, 50, 0),
                new DBFField("DepSName", NativeDbType.Char, 350, 0),
                new DBFField("IdTs", NativeDbType.Numeric, 50, 0),
                new DBFField("TsDateSt", NativeDbType.Date),
                new DBFField("TsDateEnd", NativeDbType.Date),
                new DBFField("TsDateComp", NativeDbType.Date),
                new DBFField("IdEmployee", NativeDbType.Numeric, 50, 0),
                new DBFField("EFirstname", NativeDbType.Char, 50, 0),
                new DBFField("ELastName", NativeDbType.Char, 50, 0),
                new DBFField("EPatronymi", NativeDbType.Char, 50, 0),
                new DBFField("EPostname", NativeDbType.Char, 50, 0),
                new DBFField("EStufRate", NativeDbType.Float, 50, 0),
                new DBFField("RecDate", NativeDbType.Date),
                new DBFField("RecStatus", NativeDbType.Char, 50, 0),
                new DBFField("RecHours", NativeDbType.Char, 50, 0),
            };


            var writer = new DBFWriter {
                Fields = fields.ToArray()
            };
            //writer.AddRecord(3, "s", 3, DateTime.Now, DateTime.Now, DateTime.Now, 3,
            //    "3", "3", "3", "3", 3, DateTime.Now, "3", 3);

            var addRecList1 = new List <object>();
            var addRecList2 = new List <object>();
            var addRecList3 = new List <object>();

            foreach (var model in models)
            {
                addRecList1.Clear();
                addRecList1.Add(1);
                addRecList1.Add(model.DepartmentName);
                addRecList1.Add(1);
                addRecList1.Add(model.DateBeginPeriod);
                addRecList1.Add(model.DateEndPeriod);
                addRecList1.Add(model.DateComposition);
                foreach (var paper in model.Papers)
                {
                    foreach (var empl in paper.Employees)
                    {
                        addRecList2.Clear();
                        addRecList2.AddRange(addRecList1.ToArray());
                        addRecList2.Add(1);
                        addRecList2.Add(empl.Surname);
                        addRecList2.Add(empl.Name);
                        addRecList2.Add(empl.Patronymic);
                        addRecList2.Add(empl.Post);
                        addRecList2.Add((float)empl.StaffRate);
                        //addRecList2.Add(1);
                        foreach (var rec in empl.Records)
                        {
                            addRecList3.Clear();
                            addRecList3.AddRange(addRecList2.ToArray());
                            addRecList3.Add(DateTime.Now);
                            addRecList3.Add(rec.DayStatus);
                            addRecList3.Add(rec.Value);
                            writer.AddRecord(addRecList3.ToArray());
                        }
                    }
                }
            }


            var fos = new MemoryStream();

            {
                writer.Write(fos);
            }
            return(fos.ToArray());
        }
예제 #13
0
 /// <summary>
 /// Adds the record.
 /// </summary>
 /// <param name="writer">The writer.</param>
 /// <param name="value">The value.</param>
 public static void AddRecord(this DBFWriter writer, Enumerable.IDBFIntercepter value)
 {
     writer.AddRecord(value.GetDataRow());
 }