示例#1
0
        public void DbfLibTest()
        {
            string path   = PathToTestFolder.Get(TestFolders.Db) + "Data\\";
            var    file   = new FlatDatabase.DBase.File();
            var    output = new FlatDatabase.DBase.File();

            if (file.Open(path + "File506Upload17.dbf", System.IO.FileMode.Open))
            {
                var out_columns = new List <FlatDatabase.ColumnInfo>(file.Columns);
                out_columns.Add(new FlatDatabase.ColumnInfo()
                {
                    Name = "caseid", DataType = typeof(string), Length = 20
                });
                out_columns.Add(new FlatDatabase.ColumnInfo()
                {
                    Name = "status", DataType = typeof(string), Length = 20
                });

                output.Create(path + "File506Upload17_out.dbf", out_columns);
                string str = string.Empty;

                int i = 0;
                foreach (FlatDatabase.ColumnInfo col in file.Columns)
                {
                    if (0 != i++)
                    {
                        str += "\t";
                    }
                    str += col.Name;
                }
                Console.WriteLine(str);

                for (file.Position = 0; file.Position < file.RecordCount; file.Position++)
                {
                    str = string.Empty;
                    i   = 0;
                    output.AppendRecord();
                    for (i = 0; i < file.Columns.Count; i++)
                    {
                        var col = file.Columns[i];
                        if (0 != i)
                        {
                            str += "\t";
                        }
                        var value = file.GetData(col);
                        output.WriteField(output.Columns[i], file.GetString(col));
                        str += file.GetString(col);
                        //break;
                    }
                    output.WriteField(output.Columns[i++], "Case");
                    output.WriteField(output.Columns[i], "status");
                    output.SaveRecord();
                    Console.WriteLine("{0,5} {1}", file.Position, str);
                    //break;
                }

                file.Close();
                output.Close();
            }
        }
示例#2
0
        private static void ConsoleDump(FlatDatabase.DBase.File file)
        {
            string str = string.Empty;

            int i = 0;

            foreach (FlatDatabase.ColumnInfo col in file.Columns)
            {
                if (0 != i++)
                {
                    str += sep;
                }
                str += col.Name;
            }
            Console.WriteLine(str);

            for (file.Position = 0; file.Position < file.RecordCount; file.Position++)
            {
                str = string.Empty;
                i   = 0;
                foreach (FlatDatabase.ColumnInfo col in file.Columns)
                {
                    if (0 != i++)
                    {
                        str += sep;
                    }
                    str += file.GetString(col);
                    //break;
                }
                Console.WriteLine("{0,5} {1}", file.Position, str);
                //break;
            }
        }
示例#3
0
        private static void Open(string filename)
        {
            var file = new FlatDatabase.DBase.File();

            if (file.Open(filename, System.IO.FileMode.Open))
            {
                ConsoleDump(file);
                file.Close();
            }
        }
示例#4
0
 private bool ValidateHeader(FlatDatabase.DBase.File dbfFile)
 {
     m_CellsMap.Clear();
     m_FieldsList.Clear();
     for (int i = 0; i < dbfFile.Columns.Count; i++)
     {
         var caption = dbfFile.Columns[i].Name.ToUpperInvariant();
         if (!m_CellsMap.ContainsKey(caption))
         {
             m_CellsMap.Add(caption, i);
         }
         m_FieldsList.Add(caption);
     }
     m_ExcelFileWrapper.CreateHeaderRow(m_FieldsList, BaseSettings.Uploading506ReturnOnlyErrorRows);
     return(ValidateHeaderInternal(m_FieldsList));
 }
示例#5
0
        //private int WriteResultToDatabase(string filePath, Stream stream)
        //{
        //    var ext = Path.GetExtension(filePath);
        //    string resultFile = Path.ChangeExtension(Path.GetTempFileName(), ext);
        //    File.Copy(filePath, resultFile);
        //    File.SetAttributes(resultFile, FileAttributes.Archive);
        //    var connection = GetConnection(ext, resultFile, true);
        //    using (connection)
        //    {
        //        try
        //        {
        //            connection.Open();
        //            AddResultColumns(ext, connection, resultFile);
        //            var command = CreateUpdateCommand(ext, connection, resultFile);
        //            for (int i = 0; i < UploadMaster.Items.Count; i++)
        //            {
        //                var item = UploadMaster.Items[i];
        //                (command.Parameters["@CaseID"] as OleDbParameter).Value = item.strCaseID;
        //                (command.Parameters["@Status"] as OleDbParameter).Value = item.strStatus;
        //                (command.Parameters["@RecNo"] as OleDbParameter).Value = i + 1;
        //                command.ExecuteNonQuery();
        //            }

        //            connection.Close();
        //            using (FileStream fs = new FileStream(resultFile, FileMode.Open, FileAccess.Read))
        //            {
        //                CopyStream(fs, stream);
        //            }
        //            File.Delete(resultFile);
        //        }
        //        catch (Exception ex)
        //        {
        //            LogError(ex);
        //            return 1;
        //        }
        //        return 0;
        //    }
        //}


        //private int WriteResultToAccessStream(Stream stream)
        //{
        //    throw new Exception("Writing of upload results to mdb file is not supported");
        //}

        private int WriteResultToDbfStream(Stream stream)
        {
            try
            {
                var dbfFile     = m_DbaseFile;
                var output      = new FlatDatabase.DBase.File();
                var out_columns = new List <FlatDatabase.ColumnInfo>(dbfFile.Columns);
                out_columns.Add(new FlatDatabase.ColumnInfo()
                {
                    Name = "caseid", DataType = typeof(string), Length = 20
                });
                out_columns.Add(new FlatDatabase.ColumnInfo()
                {
                    Name = "status", DataType = typeof(string), Length = 20
                });
                string outFileName = Path.ChangeExtension(Path.GetTempFileName(), ".dbf");
                output.Create(outFileName, out_columns, stream);
                for (dbfFile.Position = 0; dbfFile.Position < dbfFile.RecordCount; dbfFile.Position++)
                {
                    output.AppendRecord();
                    int i = 0;
                    for (i = 0; i < dbfFile.Columns.Count; i++)
                    {
                        var col   = dbfFile.Columns[i];
                        var value = dbfFile.GetData(col);
                        output.WriteField(output.Columns[i], dbfFile.GetString(col));
                    }
                    var item = UploadMaster.Items[(int)dbfFile.Position];
                    output.WriteField(output.Columns[i++], item.strCaseID);
                    output.WriteField(output.Columns[i], item.strStatus);
                    output.SaveRecord();
                }

                dbfFile.Close();
                output.Flush();
                output.Close();
                return(0);
            }
            catch (Exception ex)
            {
                LogError(ex);
                return(1);
            }
        }
示例#6
0
        private Upload506FileError GetItemsFromDbf(string ext, string filePath, long startRecord, long count)
        {
            m_SourceType = SourceType.DBase;
            Upload506FileError result = Upload506FileError.Success;

            UploadMaster.Items.Clear();
            m_DbaseFile = new FlatDatabase.DBase.File();
            if (m_InputStream != null)
            {
                m_DbaseFile.Attach(m_InputStream, Path.GetFileName(filePath), true);
            }
            else
            {
                m_DbaseFile.Open(filePath, System.IO.FileMode.Open);
            }
            if (m_DbaseFile.RecordCount > MaxItemsCount)
            {
                return(Upload506FileError.TooManyRows);
            }

            if (!ValidateHeader(m_DbaseFile))
            {
                return(Upload506FileError.IvalidHeaderFormat);
            }
            try
            {
                for (m_DbaseFile.Position = 0; m_DbaseFile.Position < m_DbaseFile.RecordCount; m_DbaseFile.Position++)
                {
                    var itemResult = AddItemFromDbfFile(m_DbaseFile);
                    if (itemResult > 0)
                    {
                        result = Upload506FileError.IncorrectDataFormat;
                    }
                }
                //m_DbaseFile.Close();
            }
            catch (Exception ex)
            {
                LogError(ex);
                result = Upload506FileError.Unknown;
            }
            return(result);
        }
示例#7
0
        private static void CreateMemo(string filename)
        {
            var columns = new FlatDatabase.ColumnInfo[]
            {
                new FlatDatabase.ColumnInfo()
                {
                    Name = "MEMO", DataType = typeof(string), Length = 1024
                }
            };
            var file = new FlatDatabase.DBase.File();

            if (file.Create(filename, columns))
            {
                file.AppendRecord();
                file.WriteField(columns[0], "sjov1");
                file.SaveRecord();
                file.AppendRecord();
                file.WriteField(columns[0], "sjov2");
                file.SaveRecord();

                file.Close();
            }
        }
示例#8
0
        private int AddItemFromDbfFile(FlatDatabase.DBase.File dbfFile)
        {
            int result = 0;

            using (var manager = DbManagerFactory.Factory.Create(EidssUserContext.Instance))
            {
                var item = Upload506Item.Accessor.Instance(null).CreateNewT(manager, UploadMaster);
                for (int i = 0; i < dbfFile.Columns.Count; i++)
                {
                    try
                    {
                        var col     = dbfFile.Columns[i];
                        var value   = dbfFile.GetData(col);
                        var caption = m_FieldsList[i];
                        if (m_Upload506Cells.Contains(caption))
                        {
                            string strValue = null;
                            if (value != null)
                            {
                                strValue = value.ToString().TrimEnd();
                            }
                            if (!string.IsNullOrEmpty(strValue))
                            {
                                if ((i == m_NameIndex || i == m_AddressIndex))
                                {
                                    strValue = ConvertThaiToUTF8(strValue);
                                }
                                item.SetValue(caption, strValue);
                                if (item.GetValue(caption) == null)
                                {
                                    item.AddError(caption,
                                                  string.Format(EidssMessages.Get("msg506DataTypeError"), caption));
                                    result = 4;
                                }
                                else
                                {
                                    if (m_MaxCellLengths.ContainsKey(caption) &&
                                        m_MaxCellLengths[caption] < strValue.Length)
                                    {
                                        item.AddError(caption,
                                                      string.Format(EidssMessages.Get("msg506MaxLengthError"), caption));
                                        result = 4;
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (value is string)
                            {
                                value = ConvertThaiToUTF8(value.ToString());
                            }
                            item.RawValues.Add(caption, value);
                        }
                    }
                    catch (Exception ex)
                    {
                        LogError(ex);
                        result = 4;
                    }
                }
                UploadMaster.Items.Add(item);
            }
            return(result);
        }