Commit for development environment setup
This commit is contained in:
553
PROMS/ReferencedObjectsOld/LibSource/ZZZNotUsed/VDB/vdb_Proc.cs
Normal file
553
PROMS/ReferencedObjectsOld/LibSource/ZZZNotUsed/VDB/vdb_Proc.cs
Normal file
@@ -0,0 +1,553 @@
|
||||
/*********************************************************************************************
|
||||
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
|
||||
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
* ------------------------------------------------------------------------------
|
||||
* $Workfile: vdb_Proc.cs $ $Revision: 11 $
|
||||
* $Author: Kathy $ $Date: 9/23/05 8:33a $
|
||||
*
|
||||
* $History: vdb_Proc.cs $
|
||||
*
|
||||
* ***************** Version 11 *****************
|
||||
* User: Kathy Date: 9/23/05 Time: 8:33a
|
||||
* Updated in $/LibSource/VDB
|
||||
* Fix B2005-043 - cannot select into for files with a '-' (dash).
|
||||
*
|
||||
* ***************** Version 10 *****************
|
||||
* User: Jsj Date: 9/16/05 Time: 9:54a
|
||||
* Updated in $/LibSource/VDB
|
||||
* handle dbase NDX file names that begin with a number. SQL statement
|
||||
* could not create a NDX file that begins with a number.
|
||||
*
|
||||
* ***************** Version 9 *****************
|
||||
* User: Kathy Date: 8/16/05 Time: 2:53p
|
||||
* Updated in $/LibSource/VDB
|
||||
* B2005-030: error if missing ndx
|
||||
*
|
||||
* ***************** Version 8 *****************
|
||||
* User: Kathy Date: 7/28/05 Time: 2:06p
|
||||
* Updated in $/LibSource/VDB
|
||||
* for mod proc number, select into correct destination file
|
||||
*
|
||||
* ***************** Version 7 *****************
|
||||
* User: Kathy Date: 5/19/05 Time: 11:05a
|
||||
* Updated in $/LibSource/VDB
|
||||
* speed up approve
|
||||
*
|
||||
* ***************** Version 6 *****************
|
||||
* User: Jsj Date: 5/17/05 Time: 9:39a
|
||||
* Updated in $/LibSource/VDB
|
||||
*
|
||||
* ***************** Version 5 *****************
|
||||
* User: Kathy Date: 5/11/05 Time: 9:28a
|
||||
* Updated in $/LibSource/VDB
|
||||
* add selectinto support
|
||||
*
|
||||
* ***************** Version 4 *****************
|
||||
* User: Kathy Date: 4/21/05 Time: 10:19a
|
||||
* Updated in $/LibSource/VDB
|
||||
* always write inf file
|
||||
*
|
||||
* ***************** Version 3 *****************
|
||||
* User: Kathy Date: 3/08/05 Time: 1:47p
|
||||
* Updated in $/LibSource/VDB
|
||||
* Approval
|
||||
*
|
||||
* ***************** Version 2 *****************
|
||||
* User: Jsj Date: 8/23/04 Time: 10:12a
|
||||
* Updated in $/LibSource/VDB
|
||||
* Fixed replace of single quote
|
||||
*
|
||||
* ***************** Version 1 *****************
|
||||
* User: Kathy Date: 7/27/04 Time: 8:40a
|
||||
* Created in $/LibSource/VDB
|
||||
*********************************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Collections.Specialized;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using VDB;
|
||||
|
||||
namespace VDB_Proc
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for vdb_Proc.
|
||||
/// </summary>
|
||||
public class vdb_Proc:VDB_Base
|
||||
{
|
||||
public enum SortTypes {NotSorted,StepSeqTypeSort,RECIDsort}; // list of sorting types
|
||||
public string ProcNDX = "";
|
||||
public string TmpNDXFileName = "";
|
||||
|
||||
public vdb_Proc(String strPath):base(strPath)
|
||||
{
|
||||
}
|
||||
|
||||
public string ProcGetTextFromMemo(string RecId)
|
||||
{
|
||||
return GetMemo(RecId);
|
||||
}
|
||||
|
||||
// Build a SQL statement. Optionally sort and filter the select statement.
|
||||
private void BuildSelectCommand(int SortingType,string WhereStr)
|
||||
{
|
||||
StringBuilder tmp = new StringBuilder();
|
||||
tmp.Append("SELECT [STEP], [SEQUENCE], [TEXT], [TEXTM], [TYPE], [DATE], [TIME], [INITIALS], [RECID] FROM [");
|
||||
tmp.Append(DBTable);
|
||||
tmp.Append("]");
|
||||
|
||||
if (WhereStr.Length > 0) // Was a WHERE clause passed in?
|
||||
{
|
||||
// Add " WHERE " to the beginning if it is not already there
|
||||
string tmpstr = WhereStr.ToUpper();
|
||||
if (tmpstr[0] != ' ')
|
||||
{
|
||||
tmp.Append(" ");
|
||||
if (!tmpstr.StartsWith("WHERE "))
|
||||
tmp.Append("WHERE ");
|
||||
}
|
||||
else if (!tmpstr.StartsWith(" WHERE "))
|
||||
tmp.Append(" WHERE");
|
||||
// add the passed in WHERE clause
|
||||
tmp.Append(tmpstr);
|
||||
}
|
||||
|
||||
switch (SortingType)
|
||||
{
|
||||
case 0: //NotSorted
|
||||
break;
|
||||
case 1: // StepSeqTypeSort - sorted by STEP+SEQUENCE+TYPE
|
||||
tmp.Append(" GROUP BY [STEP],[SEQUENCE],[TYPE],[TEXT],[TEXTM],[DATE],[TIME],[INITIALS],[RECID]");
|
||||
break;
|
||||
case 2: // RECIDsort - sorted by RECID
|
||||
tmp.Append(" GROUP BY [RECID],[STEP],[SEQUENCE],[TYPE],[TEXT],[TEXTM],[DATE],[TIME],[INITIALS]");
|
||||
break;
|
||||
}
|
||||
|
||||
SelectCmd = tmp.ToString();
|
||||
}
|
||||
|
||||
#if Upgrade2005_Print
|
||||
// Build a SQL statement for record count on select.
|
||||
private void BuildCountCommand(string WhereStr)
|
||||
{
|
||||
StringBuilder tmp = new StringBuilder();
|
||||
tmp.Append("SELECT COUNT(*) FROM [");
|
||||
tmp.Append(DBTable);
|
||||
tmp.Append("]");
|
||||
|
||||
if (WhereStr.Length > 0) // Was a WHERE clause passed in?
|
||||
{
|
||||
// Add " WHERE " to the beginning if it is not already there
|
||||
string tmpstr = WhereStr.ToUpper();
|
||||
if (tmpstr[0] != ' ')
|
||||
{
|
||||
tmp.Append(" ");
|
||||
if (!tmpstr.StartsWith("WHERE "))
|
||||
tmp.Append("WHERE ");
|
||||
}
|
||||
else if (!tmpstr.StartsWith(" WHERE "))
|
||||
tmp.Append(" WHERE");
|
||||
// add the passed in WHERE clause
|
||||
tmp.Append(tmpstr);
|
||||
}
|
||||
|
||||
SelectCmd = tmp.ToString();
|
||||
}
|
||||
#endif
|
||||
private void BuildNDXFileNames()
|
||||
{
|
||||
ProcNDX = DBTable;
|
||||
}
|
||||
|
||||
|
||||
// Build the SQL command needed to update a row in the Procedure file
|
||||
public override string GetRecUpdateStr(DataTable tbl,DataRow row)
|
||||
{
|
||||
int j = 0;
|
||||
bool FirstOne = true;
|
||||
StringBuilder updateStr = new StringBuilder();
|
||||
StringBuilder LikeRecID = new StringBuilder();
|
||||
bool NullEntry = false;
|
||||
|
||||
updateStr.Append("UPDATE [");
|
||||
updateStr.Append(DBTable);
|
||||
updateStr.Append("] SET");
|
||||
|
||||
foreach (DataColumn col in tbl.Columns)
|
||||
{
|
||||
bool isString = (col.DataType == Type.GetType("System.String"));
|
||||
if (col.ColumnName.Equals("STEP") && row.ItemArray[j].ToString().Equals(""))
|
||||
{
|
||||
NullEntry = true;
|
||||
j++;
|
||||
continue;
|
||||
}
|
||||
if (col.ColumnName.Equals("RECID"))
|
||||
{
|
||||
LikeRecID.Append("___"); // ignore the first 3 positions
|
||||
LikeRecID.Append(row.ItemArray[j].ToString(),3,5);
|
||||
}
|
||||
if (FirstOne)
|
||||
{
|
||||
updateStr.Append(" [");
|
||||
FirstOne = false;
|
||||
}
|
||||
else
|
||||
updateStr.Append(", [");
|
||||
updateStr.Append(col.ColumnName);
|
||||
updateStr.Append("]=");
|
||||
|
||||
if (row.ItemArray[j].ToString().Equals(""))
|
||||
{
|
||||
updateStr.Append("NULL");
|
||||
}
|
||||
else if (isString)
|
||||
{
|
||||
String tmpstr = row.ItemArray[j].ToString();
|
||||
updateStr.Append("'");
|
||||
tmpstr = tmpstr.Replace("'","''");
|
||||
updateStr.Append(tmpstr);
|
||||
updateStr.Append("'");
|
||||
}
|
||||
else if (col.DataType == Type.GetType("System.DateTime"))
|
||||
{
|
||||
int jj;
|
||||
String tmpstr = row.ItemArray[j].ToString();
|
||||
updateStr.Append("'");
|
||||
jj=tmpstr.IndexOf(" ");
|
||||
if (jj<0) jj = tmpstr.Length;
|
||||
updateStr.Append(tmpstr.Substring(0,jj));
|
||||
updateStr.Append("'");
|
||||
}
|
||||
j++;
|
||||
}
|
||||
if (NullEntry)
|
||||
{
|
||||
// So that we can change the RECID number on the first entry
|
||||
updateStr.Append(" WHERE [STEP] IS NULL");
|
||||
}
|
||||
else
|
||||
{
|
||||
updateStr.Append(" WHERE [RECID] LIKE '");
|
||||
updateStr.Append(LikeRecID.ToString());
|
||||
updateStr.Append("'");
|
||||
}
|
||||
return updateStr.ToString();
|
||||
}
|
||||
|
||||
|
||||
// Build the SQL command needed to insert a row in the Procedure file
|
||||
public override string GetRecInsertStr(DataTable tbl,DataRow row)
|
||||
{
|
||||
int j = 0;
|
||||
StringBuilder insrtStr = new StringBuilder();
|
||||
StringBuilder valueStr = new StringBuilder();
|
||||
|
||||
insrtStr.Append("INSERT INTO [");
|
||||
insrtStr.Append(DBTable);
|
||||
insrtStr.Append("] (");
|
||||
|
||||
valueStr.Append(" VALUES (");
|
||||
|
||||
foreach (DataColumn col in tbl.Columns)
|
||||
{
|
||||
bool isString = (col.DataType == Type.GetType("System.String"));
|
||||
insrtStr.Append("[");
|
||||
insrtStr.Append(col.ColumnName);
|
||||
insrtStr.Append("],");
|
||||
|
||||
if (row.ItemArray[j].ToString().Equals(""))
|
||||
{
|
||||
valueStr.Append("NULL");
|
||||
}
|
||||
else if (isString)
|
||||
{
|
||||
String tmpstr = row.ItemArray[j].ToString();
|
||||
tmpstr = tmpstr.Replace("'","''");
|
||||
valueStr.Append("'");
|
||||
valueStr.Append(tmpstr);
|
||||
valueStr.Append("'");
|
||||
}
|
||||
else if (col.DataType == Type.GetType("System.DateTime"))
|
||||
{
|
||||
int jj;
|
||||
String tmpstr = row.ItemArray[j].ToString();
|
||||
valueStr.Append("'");
|
||||
jj = tmpstr.IndexOf(" ");
|
||||
if (jj<0) jj=tmpstr.Length;
|
||||
valueStr.Append(tmpstr.Substring(0,jj));
|
||||
valueStr.Append("'");
|
||||
}
|
||||
else
|
||||
{
|
||||
valueStr.Append(row.ItemArray[j].ToString());
|
||||
}
|
||||
valueStr.Append(",");
|
||||
j++;
|
||||
}
|
||||
|
||||
insrtStr = insrtStr.Replace(',',')',insrtStr.Length-1,1);
|
||||
valueStr = valueStr.Replace(',',')',valueStr.Length-1,1);
|
||||
insrtStr.Append(valueStr.ToString());
|
||||
|
||||
return insrtStr.ToString();
|
||||
}
|
||||
|
||||
// Build the SQL command needed to delete a row in the Procedure file
|
||||
public override string RecDeleteStr(DataTable tbl,DataRow row)
|
||||
{
|
||||
int j = 0;
|
||||
String RecIDStr = "";
|
||||
String StepStr = "";
|
||||
String SeqStr = "";
|
||||
StringBuilder deleteStr = new StringBuilder();
|
||||
|
||||
deleteStr.Append("DELETE FROM [");
|
||||
deleteStr.Append(DBTable);
|
||||
deleteStr.Append("] WHERE ");
|
||||
|
||||
row.RejectChanges();
|
||||
foreach (DataColumn col in tbl.Columns)
|
||||
{
|
||||
if (col.ColumnName.Equals("STEP"))
|
||||
{
|
||||
StepStr = row.ItemArray[j].ToString();
|
||||
}
|
||||
else if (col.ColumnName.Equals("SEQUENCE"))
|
||||
{
|
||||
SeqStr = row.ItemArray[j].ToString();
|
||||
}
|
||||
else if (col.ColumnName.Equals("RECID"))
|
||||
{
|
||||
RecIDStr = row.ItemArray[j].ToString();
|
||||
}
|
||||
j++;
|
||||
}
|
||||
// we might want to change this to delete via only the RECID
|
||||
// but that could be risky if we have duplicate RECIDs
|
||||
deleteStr.Append("[STEP] = '");
|
||||
deleteStr.Append(StepStr);
|
||||
deleteStr.Append("' AND [SEQUENCE] = '");
|
||||
deleteStr.Append(SeqStr);
|
||||
deleteStr.Append("' AND [RECID] = '");
|
||||
deleteStr.Append(RecIDStr);
|
||||
deleteStr.Append("'");
|
||||
|
||||
return deleteStr.ToString();
|
||||
|
||||
}
|
||||
|
||||
public override string GetCreateIndx1String()
|
||||
{
|
||||
StringBuilder index1Str = new StringBuilder();
|
||||
// Make a temporary index file name if dBase filename
|
||||
// for any procedure. (those that start with a number
|
||||
// or had a dash were having a problem here - see
|
||||
// B2005-040 & 043).
|
||||
TmpNDXFileName = "ndxtmp";
|
||||
index1Str.Append("CREATE INDEX [");
|
||||
index1Str.Append(TmpNDXFileName);
|
||||
index1Str.Append("] ON [");
|
||||
index1Str.Append(DBTable);
|
||||
index1Str.Append("] ([STEP],[SEQUENCE],[TYPE])");
|
||||
return (index1Str.ToString());
|
||||
}
|
||||
|
||||
public override bool IndexFilesExist()
|
||||
{
|
||||
if (ProcNDX == "") BuildNDXFileNames();
|
||||
if(File.Exists(DBPath+"\\"+ProcNDX+".NDX")) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void DeleteIndexFiles()
|
||||
{
|
||||
if(File.Exists(DBPath+"\\"+ProcNDX+".NDX")) File.Delete(DBPath+"\\"+ProcNDX+".NDX");
|
||||
}
|
||||
|
||||
// Build a list of SQL commands needed to create a new Procedure table (file)
|
||||
// and add the first row
|
||||
public override StringCollection CreateTableStatements(string strTblName)
|
||||
{
|
||||
StringCollection rtnStrColl = new StringCollection();
|
||||
StringBuilder createStr = new StringBuilder();
|
||||
|
||||
if (strTblName.Length > 0) // was a table name passd in?
|
||||
{
|
||||
DBTable = strTblName; // this will create the INI file for dBase
|
||||
}
|
||||
|
||||
if (DBTable.Equals(""))
|
||||
{
|
||||
MessageBox.Show("Trying to Create a new Table without a Name","Create Table Error");
|
||||
return rtnStrColl;
|
||||
}
|
||||
|
||||
// Build the command that creates a new SET table (file)
|
||||
createStr.Append("CREATE TABLE [");
|
||||
createStr.Append(DBTable);
|
||||
createStr.Append("] ");
|
||||
createStr.Append("([STEP] Char(2), [SEQUENCE] Char(10), [TEXT] Char(100), ");
|
||||
createStr.Append("[TEXTM] TEXT, [TYPE] Char(2), [DATE] Date, [TIME] Char(5), ");
|
||||
createStr.Append("INITIALS Char(5), [RECID] Char(8))");
|
||||
|
||||
rtnStrColl.Add(createStr.ToString()); // add create table
|
||||
|
||||
// If we are using dBase files, create the index files too
|
||||
|
||||
if (isdBaseFile())
|
||||
{
|
||||
// Build the command that creates the index file
|
||||
|
||||
rtnStrColl.Add(GetCreateIndx1String()); // add create index
|
||||
}
|
||||
return rtnStrColl;
|
||||
}
|
||||
|
||||
// Build a list of SQL commands needed to create the first row (a.k.a record zero)
|
||||
public override StringCollection CreateFirstRecordStatement(string strTblName)
|
||||
{
|
||||
StringCollection rtnStrColl = new StringCollection();
|
||||
StringBuilder firstRecStr = new StringBuilder();
|
||||
|
||||
// Build the command that adds the first (blank) record
|
||||
// with the RECID initialize to 00000001
|
||||
firstRecStr.Append("INSERT INTO [");
|
||||
firstRecStr.Append(DBTable);
|
||||
firstRecStr.Append("] ([RECID]) VALUES ('00000001')");
|
||||
|
||||
rtnStrColl.Add(firstRecStr.ToString()); // add insert first record
|
||||
return rtnStrColl;
|
||||
}
|
||||
|
||||
// make statement to select into a new table. Table must not exist and
|
||||
// can include a path to the table.
|
||||
public override StringCollection SelectIntoStatements(string destdb)
|
||||
{
|
||||
StringCollection rtnStrColl = new StringCollection();
|
||||
StringBuilder str = new StringBuilder();
|
||||
str.Append("SELECT * INTO [");
|
||||
str.Append(destdb.Substring(destdb.LastIndexOf('\\')+1,destdb.Length-destdb.LastIndexOf('\\')-1));
|
||||
str.Append("] IN '");
|
||||
str.Append(destdb.Substring(0,destdb.LastIndexOf('\\')));
|
||||
str.Append("' 'dBase III;' from [");
|
||||
str.Append(DBTable);
|
||||
str.Append("]");
|
||||
rtnStrColl.Add(str.ToString());
|
||||
return rtnStrColl;
|
||||
}
|
||||
|
||||
// After the table is created, create the associated INF file
|
||||
public override int PostCreateTableFunction()
|
||||
{
|
||||
CreateINF(); // should already be created
|
||||
return 0;
|
||||
}
|
||||
|
||||
// This will be called from CreateTableStatements()
|
||||
// and this is called if the table name is assigned to the DBTable property
|
||||
public override int CreateINF()
|
||||
{
|
||||
// if we are using dBase files, create an INF file containing
|
||||
// a list of the associated NDX files.
|
||||
if (isdBaseFile())
|
||||
{
|
||||
StreamWriter infFile;
|
||||
string infFileStr;
|
||||
StringBuilder tmp = new StringBuilder();
|
||||
|
||||
// build the ndx file names (w/o extensions)
|
||||
BuildNDXFileNames();
|
||||
|
||||
//build INF file name
|
||||
tmp.Append(DBPath);
|
||||
tmp.Append("\\");
|
||||
tmp.Append(DBTable);
|
||||
tmp.Append(".INF");
|
||||
|
||||
infFileStr = tmp.ToString();
|
||||
|
||||
// always recreate it. Some plants' data had invalid files
|
||||
// and it was felt that it would be quicker to recreate always
|
||||
// rather than read and check.
|
||||
infFile = new StreamWriter(infFileStr,false);
|
||||
infFile.Write("NDX1=");
|
||||
infFile.Write(ProcNDX);
|
||||
infFile.Write(".NDX\r\n");
|
||||
infFile.Close();
|
||||
|
||||
// a temp index file name was always used to create the index
|
||||
// because unusual file names, such as those beginning with
|
||||
// a number or those with a '-' caused an error to occur
|
||||
// during ndx file creation. This fixes, B2005-040 & B2005-043.
|
||||
if (TmpNDXFileName.Length > 0)
|
||||
{
|
||||
File.Copy(TmpNDXFileName+".NDX",ProcNDX+".NDX");
|
||||
File.Delete(TmpNDXFileName+".NDX");
|
||||
TmpNDXFileName = "";
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public override StringCollection CreateIndexFilesStatements()
|
||||
{
|
||||
if (isdBaseFile())
|
||||
{
|
||||
StringCollection rtnStrColl = new StringCollection();
|
||||
string indx1 = GetCreateIndx1String();
|
||||
rtnStrColl.Add(indx1);
|
||||
return rtnStrColl;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// return a list of SQL commands that will drop (delete) a database table (file)
|
||||
public override StringCollection DeleteTableStatements(string strTblName)
|
||||
{
|
||||
StringCollection rtnStrColl = new StringCollection();
|
||||
StringBuilder DropTableStr = new StringBuilder();
|
||||
|
||||
DropTableStr.Append("Drop Table [");
|
||||
DropTableStr.Append(DBTable);
|
||||
DropTableStr.Append("]");
|
||||
|
||||
rtnStrColl.Add(DropTableStr.ToString());
|
||||
return rtnStrColl;
|
||||
}
|
||||
|
||||
// return a dataset of procedure records, not sorted
|
||||
public System.Data.DataSet GetNotSorted(string WhereStr)
|
||||
{
|
||||
BuildSelectCommand((int)SortTypes.NotSorted,WhereStr);
|
||||
return DB_Data;
|
||||
}
|
||||
|
||||
// return a dataset of procedure records, sorted by the [STEP] field
|
||||
public System.Data.DataSet GetSortedByStepSeqType(string WhereStr)
|
||||
{
|
||||
BuildSelectCommand((int)SortTypes.StepSeqTypeSort,WhereStr);
|
||||
return DB_Data;
|
||||
}
|
||||
|
||||
// return a dataset of procedure records, sorted by the [RECID] field
|
||||
public System.Data.DataSet GetSortedByRECID(string WhereStr)
|
||||
{
|
||||
BuildSelectCommand((int)SortTypes.RECIDsort,WhereStr);
|
||||
return DB_Data;
|
||||
}
|
||||
|
||||
#if Upgrade2005_Print
|
||||
// return integer count of selected records only
|
||||
public int GetCount(string WhereStr)
|
||||
{
|
||||
BuildCountCommand(WhereStr);
|
||||
DataSet ds = DB_Data;
|
||||
return ds.Tables[0].Rows.Count;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user