예제 #1
0
 ///<summary>Inserts one LetterMergeField into the database.  Returns the new priKey.</summary>
 public static long Insert(LetterMergeField letterMergeField)
 {
     if (DataConnection.DBtype == DatabaseType.Oracle)
     {
         letterMergeField.FieldNum = DbHelper.GetNextOracleKey("lettermergefield", "FieldNum");
         int loopcount = 0;
         while (loopcount < 100)
         {
             try {
                 return(Insert(letterMergeField, true));
             }
             catch (Oracle.DataAccess.Client.OracleException ex) {
                 if (ex.Number == 1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated"))
                 {
                     letterMergeField.FieldNum++;
                     loopcount++;
                 }
                 else
                 {
                     throw ex;
                 }
             }
         }
         throw new ApplicationException("Insert failed.  Could not generate primary key.");
     }
     else
     {
         return(Insert(letterMergeField, false));
     }
 }
예제 #2
0
        ///<summary>Inserts this lettermergefield into database.</summary>
        public static void Insert(LetterMergeField lmf)
        {
            if (PrefB.RandomKeys)
            {
                lmf.FieldNum = MiscData.GetKey("lettermergefield", "FieldNum");
            }
            string command = "INSERT INTO lettermergefield (";

            if (PrefB.RandomKeys)
            {
                command += "FieldNum,";
            }
            command += "LetterMergeNum,FieldName"
                       + ") VALUES(";
            if (PrefB.RandomKeys)
            {
                command += "'" + POut.PInt(lmf.FieldNum) + "', ";
            }
            command +=
                "'" + POut.PInt(lmf.LetterMergeNum) + "', "
                + "'" + POut.PString(lmf.FieldName) + "')";
            //MessageBox.Show(string command);
            if (PrefB.RandomKeys)
            {
                General.NonQ(command);
            }
            else
            {
                lmf.FieldNum = General.NonQ(command, true);
            }
        }
예제 #3
0
        ///<summary>Inserts one LetterMergeField into the database.  Provides option to use the existing priKey.</summary>
        public static long Insert(LetterMergeField letterMergeField, bool useExistingPK)
        {
            if (!useExistingPK && PrefC.RandomKeys)
            {
                letterMergeField.FieldNum = ReplicationServers.GetKey("lettermergefield", "FieldNum");
            }
            string command = "INSERT INTO lettermergefield (";

            if (useExistingPK || PrefC.RandomKeys)
            {
                command += "FieldNum,";
            }
            command += "LetterMergeNum,FieldName) VALUES(";
            if (useExistingPK || PrefC.RandomKeys)
            {
                command += POut.Long(letterMergeField.FieldNum) + ",";
            }
            command +=
                POut.Long(letterMergeField.LetterMergeNum) + ","
                + "'" + POut.String(letterMergeField.FieldName) + "')";
            if (useExistingPK || PrefC.RandomKeys)
            {
                Db.NonQ(command);
            }
            else
            {
                letterMergeField.FieldNum = Db.NonQ(command, true);
            }
            return(letterMergeField.FieldNum);
        }
예제 #4
0
        ///<summary>Inserts one LetterMergeField into the database.  Provides option to use the existing priKey.  Doesn't use the cache.</summary>
        public static long InsertNoCache(LetterMergeField letterMergeField, bool useExistingPK)
        {
            bool   isRandomKeys = Prefs.GetBoolNoCache(PrefName.RandomPrimaryKeys);
            string command      = "INSERT INTO lettermergefield (";

            if (!useExistingPK && isRandomKeys)
            {
                letterMergeField.FieldNum = ReplicationServers.GetKeyNoCache("lettermergefield", "FieldNum");
            }
            if (isRandomKeys || useExistingPK)
            {
                command += "FieldNum,";
            }
            command += "LetterMergeNum,FieldName) VALUES(";
            if (isRandomKeys || useExistingPK)
            {
                command += POut.Long(letterMergeField.FieldNum) + ",";
            }
            command +=
                POut.Long(letterMergeField.LetterMergeNum) + ","
                + "'" + POut.String(letterMergeField.FieldName) + "')";
            if (useExistingPK || isRandomKeys)
            {
                Db.NonQ(command);
            }
            else
            {
                letterMergeField.FieldNum = Db.NonQ(command, true, "FieldNum", "letterMergeField");
            }
            return(letterMergeField.FieldNum);
        }
예제 #5
0
 ///<summary>Inserts one LetterMergeField into the database.  Returns the new priKey.</summary>
 internal static long Insert(LetterMergeField letterMergeField)
 {
     if(DataConnection.DBtype==DatabaseType.Oracle) {
         letterMergeField.FieldNum=DbHelper.GetNextOracleKey("lettermergefield","FieldNum");
         int loopcount=0;
         while(loopcount<100){
             try {
                 return Insert(letterMergeField,true);
             }
             catch(Oracle.DataAccess.Client.OracleException ex){
                 if(ex.Number==1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated")){
                     letterMergeField.FieldNum++;
                     loopcount++;
                 }
                 else{
                     throw ex;
                 }
             }
         }
         throw new ApplicationException("Insert failed.  Could not generate primary key.");
     }
     else {
         return Insert(letterMergeField,false);
     }
 }
예제 #6
0
        ///<summary>Updates one LetterMergeField in the database.  Uses an old object to compare to, and only alters changed fields.  This prevents collisions and concurrency problems in heavily used tables.</summary>
        public static void Update(LetterMergeField letterMergeField, LetterMergeField oldLetterMergeField)
        {
            string command = "";

            if (letterMergeField.LetterMergeNum != oldLetterMergeField.LetterMergeNum)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "LetterMergeNum = " + POut.Long(letterMergeField.LetterMergeNum) + "";
            }
            if (letterMergeField.FieldName != oldLetterMergeField.FieldName)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "FieldName = '" + POut.String(letterMergeField.FieldName) + "'";
            }
            if (command == "")
            {
                return;
            }
            command = "UPDATE lettermergefield SET " + command
                      + " WHERE FieldNum = " + POut.Long(letterMergeField.FieldNum);
            Db.NonQ(command);
        }
예제 #7
0
        private void butOK_Click(object sender, System.EventArgs e)
        {
            if (textDescription.Text == "")
            {
                MsgBox.Show(this, "Please enter a description");
                return;
            }
            if (this.textDataFileName.Text == "" ||
                this.textTemplateName.Text == "")
            {
                MsgBox.Show(this, "Filenames cannot be left blank.");
                return;
            }
            if (comboCategory.SelectedIndex == -1)
            {
                MsgBox.Show(this, "Please select a category");
                return;
            }
            if (listPatSelect.SelectedIndices.Count == 0 &&
                listReferral.SelectedIndices.Count == 0)
            {
                MsgBox.Show(this, "Please select at least one field.");
                return;
            }
            Cursor.Current              = Cursors.WaitCursor;
            LetterMergeCur.Description  = textDescription.Text;
            LetterMergeCur.TemplateName = textTemplateName.Text;
            LetterMergeCur.DataFileName = textDataFileName.Text;
            LetterMergeCur.Category
                = DefB.Short[(int)DefCat.LetterMergeCats][comboCategory.SelectedIndex].DefNum;
            if (IsNew)
            {
                LetterMerges.Insert(LetterMergeCur);
            }
            else
            {
                LetterMerges.Update(LetterMergeCur);
            }
            LetterMergeFields.DeleteForLetter(LetterMergeCur.LetterMergeNum);
            LetterMergeField field;

            for (int i = 0; i < listPatSelect.SelectedItems.Count; i++)
            {
                field = new LetterMergeField();
                field.LetterMergeNum = LetterMergeCur.LetterMergeNum;
                field.FieldName      = (string)listPatSelect.SelectedItems[i];
                //(string)listPatSelect.Items[listPatSelect.SelectedIndices[i]];
                LetterMergeFields.Insert(field);
            }
            for (int i = 0; i < listReferral.SelectedItems.Count; i++)
            {
                field = new LetterMergeField();
                field.LetterMergeNum = LetterMergeCur.LetterMergeNum;
                field.FieldName      = "referral." + (string)listReferral.SelectedItems[i];
                LetterMergeFields.Insert(field);
            }
            Cursor.Current = Cursors.Default;
            DialogResult   = DialogResult.OK;
        }
예제 #8
0
        ///<summary>Updates one LetterMergeField in the database.</summary>
        public static void Update(LetterMergeField letterMergeField)
        {
            string command = "UPDATE lettermergefield SET "
                             + "LetterMergeNum=  " + POut.Long(letterMergeField.LetterMergeNum) + ", "
                             + "FieldName     = '" + POut.String(letterMergeField.FieldName) + "' "
                             + "WHERE FieldNum = " + POut.Long(letterMergeField.FieldNum);

            Db.NonQ(command);
        }
예제 #9
0
 ///<summary>Returns true if Update(LetterMergeField,LetterMergeField) would make changes to the database.
 ///Does not make any changes to the database and can be called before remoting role is checked.</summary>
 public static bool UpdateComparison(LetterMergeField letterMergeField, LetterMergeField oldLetterMergeField)
 {
     if (letterMergeField.LetterMergeNum != oldLetterMergeField.LetterMergeNum)
     {
         return(true);
     }
     if (letterMergeField.FieldName != oldLetterMergeField.FieldName)
     {
         return(true);
     }
     return(false);
 }
예제 #10
0
		///<summary>Converts a DataTable to a list of objects.</summary>
		public static List<LetterMergeField> TableToList(DataTable table){
			List<LetterMergeField> retVal=new List<LetterMergeField>();
			LetterMergeField letterMergeField;
			for(int i=0;i<table.Rows.Count;i++) {
				letterMergeField=new LetterMergeField();
				letterMergeField.FieldNum      = PIn.Long  (table.Rows[i]["FieldNum"].ToString());
				letterMergeField.LetterMergeNum= PIn.Long  (table.Rows[i]["LetterMergeNum"].ToString());
				letterMergeField.FieldName     = PIn.String(table.Rows[i]["FieldName"].ToString());
				retVal.Add(letterMergeField);
			}
			return retVal;
		}
예제 #11
0
        ///<summary>Converts a DataTable to a list of objects.</summary>
        public static List <LetterMergeField> TableToList(DataTable table)
        {
            List <LetterMergeField> retVal = new List <LetterMergeField>();
            LetterMergeField        letterMergeField;

            for (int i = 0; i < table.Rows.Count; i++)
            {
                letterMergeField                = new LetterMergeField();
                letterMergeField.FieldNum       = PIn.Long(table.Rows[i]["FieldNum"].ToString());
                letterMergeField.LetterMergeNum = PIn.Long(table.Rows[i]["LetterMergeNum"].ToString());
                letterMergeField.FieldName      = PIn.String(table.Rows[i]["FieldName"].ToString());
                retVal.Add(letterMergeField);
            }
            return(retVal);
        }
예제 #12
0
        ///<summary>Converts a DataTable to a list of objects.</summary>
        public static List <LetterMergeField> TableToList(DataTable table)
        {
            List <LetterMergeField> retVal = new List <LetterMergeField>();
            LetterMergeField        letterMergeField;

            foreach (DataRow row in table.Rows)
            {
                letterMergeField                = new LetterMergeField();
                letterMergeField.FieldNum       = PIn.Long(row["FieldNum"].ToString());
                letterMergeField.LetterMergeNum = PIn.Long(row["LetterMergeNum"].ToString());
                letterMergeField.FieldName      = PIn.String(row["FieldName"].ToString());
                retVal.Add(letterMergeField);
            }
            return(retVal);
        }
예제 #13
0
 ///<summary>Inserts one LetterMergeField into the database.  Returns the new priKey.  Doesn't use the cache.</summary>
 public static long InsertNoCache(LetterMergeField letterMergeField)
 {
     if (DataConnection.DBtype == DatabaseType.MySql)
     {
         return(InsertNoCache(letterMergeField, false));
     }
     else
     {
         if (DataConnection.DBtype == DatabaseType.Oracle)
         {
             letterMergeField.FieldNum = DbHelper.GetNextOracleKey("lettermergefield", "FieldNum");                  //Cacheless method
         }
         return(InsertNoCache(letterMergeField, true));
     }
 }
예제 #14
0
        ///<summary></summary>
        public static void Refresh()
        {
            string command =
                "SELECT * FROM lettermergefield "
                + "ORDER BY FieldName";
            DataTable table = General.GetTable(command);

            List = new LetterMergeField[table.Rows.Count];
            for (int i = 0; i < table.Rows.Count; i++)
            {
                List[i]                = new LetterMergeField();
                List[i].FieldNum       = PIn.PInt(table.Rows[i][0].ToString());
                List[i].LetterMergeNum = PIn.PInt(table.Rows[i][1].ToString());
                List[i].FieldName      = PIn.PString(table.Rows[i][2].ToString());
            }
        }
예제 #15
0
		///<summary>Inserts one LetterMergeField into the database.  Provides option to use the existing priKey.</summary>
		public static long Insert(LetterMergeField letterMergeField,bool useExistingPK){
			if(!useExistingPK && PrefC.RandomKeys) {
				letterMergeField.FieldNum=ReplicationServers.GetKey("lettermergefield","FieldNum");
			}
			string command="INSERT INTO lettermergefield (";
			if(useExistingPK || PrefC.RandomKeys) {
				command+="FieldNum,";
			}
			command+="LetterMergeNum,FieldName) VALUES(";
			if(useExistingPK || PrefC.RandomKeys) {
				command+=POut.Long(letterMergeField.FieldNum)+",";
			}
			command+=
				     POut.Long  (letterMergeField.LetterMergeNum)+","
				+"'"+POut.String(letterMergeField.FieldName)+"')";
			if(useExistingPK || PrefC.RandomKeys) {
				Db.NonQ(command);
			}
			else {
				letterMergeField.FieldNum=Db.NonQ(command,true);
			}
			return letterMergeField.FieldNum;
		}
예제 #16
0
		///<summary>Updates one LetterMergeField in the database.  Uses an old object to compare to, and only alters changed fields.  This prevents collisions and concurrency problems in heavily used tables.  Returns true if an update occurred.</summary>
		public static bool Update(LetterMergeField letterMergeField,LetterMergeField oldLetterMergeField){
			string command="";
			if(letterMergeField.LetterMergeNum != oldLetterMergeField.LetterMergeNum) {
				if(command!=""){ command+=",";}
				command+="LetterMergeNum = "+POut.Long(letterMergeField.LetterMergeNum)+"";
			}
			if(letterMergeField.FieldName != oldLetterMergeField.FieldName) {
				if(command!=""){ command+=",";}
				command+="FieldName = '"+POut.String(letterMergeField.FieldName)+"'";
			}
			if(command==""){
				return false;
			}
			command="UPDATE lettermergefield SET "+command
				+" WHERE FieldNum = "+POut.Long(letterMergeField.FieldNum);
			Db.NonQ(command);
			return true;
		}
예제 #17
0
 ///<summary>Inserts one LetterMergeField into the database.  Returns the new priKey.</summary>
 public static long Insert(LetterMergeField letterMergeField)
 {
     return(Insert(letterMergeField, false));
 }
예제 #18
0
		///<summary>Updates one LetterMergeField in the database.</summary>
		public static void Update(LetterMergeField letterMergeField){
			string command="UPDATE lettermergefield SET "
				+"LetterMergeNum=  "+POut.Long  (letterMergeField.LetterMergeNum)+", "
				+"FieldName     = '"+POut.String(letterMergeField.FieldName)+"' "
				+"WHERE FieldNum = "+POut.Long(letterMergeField.FieldNum);
			Db.NonQ(command);
		}