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(); } }
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; } }
private static void Open(string filename) { var file = new FlatDatabase.DBase.File(); if (file.Open(filename, System.IO.FileMode.Open)) { ConsoleDump(file); file.Close(); } }
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)); }
//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); } }
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); }
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(); } }
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); }