コード例 #1
0
        ///<summary>Inserts one LetterMerge into the database.  Provides option to use the existing priKey.</summary>
        public static long Insert(LetterMerge letterMerge, bool useExistingPK)
        {
            if (!useExistingPK && PrefC.RandomKeys)
            {
                letterMerge.LetterMergeNum = ReplicationServers.GetKey("lettermerge", "LetterMergeNum");
            }
            string command = "INSERT INTO lettermerge (";

            if (useExistingPK || PrefC.RandomKeys)
            {
                command += "LetterMergeNum,";
            }
            command += "Description,TemplateName,DataFileName,Category) VALUES(";
            if (useExistingPK || PrefC.RandomKeys)
            {
                command += POut.Long(letterMerge.LetterMergeNum) + ",";
            }
            command +=
                "'" + POut.String(letterMerge.Description) + "',"
                + "'" + POut.String(letterMerge.TemplateName) + "',"
                + "'" + POut.String(letterMerge.DataFileName) + "',"
                + POut.Long(letterMerge.Category) + ")";
            if (useExistingPK || PrefC.RandomKeys)
            {
                Db.NonQ(command);
            }
            else
            {
                letterMerge.LetterMergeNum = Db.NonQ(command, true);
            }
            return(letterMerge.LetterMergeNum);
        }
コード例 #2
0
        ///<summary></summary>
        public static void Delete(LetterMerge merge)
        {
            string command = "DELETE FROM lettermerge "
                             + "WHERE LetterMergeNum = " + POut.PInt(merge.LetterMergeNum);

            General.NonQ(command);
        }
コード例 #3
0
        private void SaveToImageFolder(string fileSourcePath, LetterMerge letterCur)
        {
            if (letterCur.ImageFolder == 0)           //This shouldn't happen
            {
                return;
            }
            string rawBase64 = "";

            if (PrefC.AtoZfolderUsed == DataStorageType.InDatabase)
            {
                rawBase64 = Convert.ToBase64String(File.ReadAllBytes(fileSourcePath));
            }
            Document docSave = new Document();

            docSave.DocNum = Documents.Insert(docSave);
            string fileName     = Lans.g(this, "LetterMerge") + "_" + letterCur.Description + docSave.DocNum;
            string fileDestPath = FileAtoZ.CombinePaths(ImageStore.GetPatientFolder(PatCur, ImageStore.GetPreferredAtoZpath()), fileName + ".doc");

            docSave.ImgType     = ImageType.Document;
            docSave.DateCreated = DateTime.Now;
            docSave.PatNum      = PatCur.PatNum;
            docSave.DocCategory = letterCur.ImageFolder;
            docSave.Description = fileName;          //no extension.
            docSave.RawBase64   = rawBase64;         //blank if using AtoZfolder
            docSave.FileName    = fileName + ".doc"; //file extension used for both DB images and AtoZ images
            FileAtoZ.Copy(fileSourcePath, fileDestPath, FileAtoZSourceDestination.LocalToAtoZ);
            Documents.Update(docSave);
        }
コード例 #4
0
 ///<summary>Inserts one LetterMerge into the database.  Returns the new priKey.</summary>
 public static long Insert(LetterMerge letterMerge)
 {
     if (DataConnection.DBtype == DatabaseType.Oracle)
     {
         letterMerge.LetterMergeNum = DbHelper.GetNextOracleKey("lettermerge", "LetterMergeNum");
         int loopcount = 0;
         while (loopcount < 100)
         {
             try {
                 return(Insert(letterMerge, true));
             }
             catch (Oracle.DataAccess.Client.OracleException ex) {
                 if (ex.Number == 1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated"))
                 {
                     letterMerge.LetterMergeNum++;
                     loopcount++;
                 }
                 else
                 {
                     throw ex;
                 }
             }
         }
         throw new ApplicationException("Insert failed.  Could not generate primary key.");
     }
     else
     {
         return(Insert(letterMerge, false));
     }
 }
コード例 #5
0
ファイル: LetterMergeCrud.cs プロジェクト: nampn/ODental
 ///<summary>Inserts one LetterMerge into the database.  Returns the new priKey.</summary>
 internal static long Insert(LetterMerge letterMerge)
 {
     if(DataConnection.DBtype==DatabaseType.Oracle) {
         letterMerge.LetterMergeNum=DbHelper.GetNextOracleKey("lettermerge","LetterMergeNum");
         int loopcount=0;
         while(loopcount<100){
             try {
                 return Insert(letterMerge,true);
             }
             catch(Oracle.DataAccess.Client.OracleException ex){
                 if(ex.Number==1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated")){
                     letterMerge.LetterMergeNum++;
                     loopcount++;
                 }
                 else{
                     throw ex;
                 }
             }
         }
         throw new ApplicationException("Insert failed.  Could not generate primary key.");
     }
     else {
         return Insert(letterMerge,false);
     }
 }
コード例 #6
0
        ///<summary>Inserts one LetterMerge into the database.  Provides option to use the existing priKey.  Doesn't use the cache.</summary>
        public static long InsertNoCache(LetterMerge letterMerge, bool useExistingPK)
        {
            bool   isRandomKeys = Prefs.GetBoolNoCache(PrefName.RandomPrimaryKeys);
            string command      = "INSERT INTO lettermerge (";

            if (!useExistingPK && isRandomKeys)
            {
                letterMerge.LetterMergeNum = ReplicationServers.GetKeyNoCache("lettermerge", "LetterMergeNum");
            }
            if (isRandomKeys || useExistingPK)
            {
                command += "LetterMergeNum,";
            }
            command += "Description,TemplateName,DataFileName,Category,ImageFolder) VALUES(";
            if (isRandomKeys || useExistingPK)
            {
                command += POut.Long(letterMerge.LetterMergeNum) + ",";
            }
            command +=
                "'" + POut.String(letterMerge.Description) + "',"
                + "'" + POut.String(letterMerge.TemplateName) + "',"
                + "'" + POut.String(letterMerge.DataFileName) + "',"
                + POut.Long(letterMerge.Category) + ","
                + POut.Long(letterMerge.ImageFolder) + ")";
            if (useExistingPK || isRandomKeys)
            {
                Db.NonQ(command);
            }
            else
            {
                letterMerge.LetterMergeNum = Db.NonQ(command, true, "LetterMergeNum", "letterMerge");
            }
            return(letterMerge.LetterMergeNum);
        }
コード例 #7
0
ファイル: FormLetterMerges.cs プロジェクト: royedwards/DRDNet
        private Document SaveToImageFolder(string fileSourcePath, LetterMerge letterCur)
        {
            if (letterCur.ImageFolder == 0)           //This shouldn't happen
            {
                return(new Document());
            }
            string rawBase64 = "";

            if (PrefC.AtoZfolderUsed == DataStorageType.InDatabase)
            {
                rawBase64 = Convert.ToBase64String(File.ReadAllBytes(fileSourcePath));
            }
            Document docSave = new Document();

            docSave.DocNum      = Documents.Insert(docSave);
            docSave.ImgType     = ImageType.Document;
            docSave.DateCreated = DateTime.Now;
            docSave.PatNum      = PatCur.PatNum;
            docSave.DocCategory = letterCur.ImageFolder;
            docSave.Description = letterCur.Description + docSave.DocNum; //no extension.
            docSave.RawBase64   = rawBase64;                              //blank if using AtoZfolder
            docSave.FileName    = ODFileUtils.CleanFileName(letterCur.Description) + GetFileExtensionForWordDoc(fileSourcePath);
            string fileDestPath = ImageStore.GetFilePath(docSave, ImageStore.GetPatientFolder(PatCur, ImageStore.GetPreferredAtoZpath()));

            FileAtoZ.Copy(fileSourcePath, fileDestPath, FileAtoZSourceDestination.LocalToAtoZ);
            Documents.Update(docSave);
            return(docSave);
        }
コード例 #8
0
ファイル: LetterMergeCrud.cs プロジェクト: nampn/ODental
 ///<summary>Inserts one LetterMerge into the database.  Provides option to use the existing priKey.</summary>
 internal static long Insert(LetterMerge letterMerge,bool useExistingPK)
 {
     if(!useExistingPK && PrefC.RandomKeys) {
         letterMerge.LetterMergeNum=ReplicationServers.GetKey("lettermerge","LetterMergeNum");
     }
     string command="INSERT INTO lettermerge (";
     if(useExistingPK || PrefC.RandomKeys) {
         command+="LetterMergeNum,";
     }
     command+="Description,TemplateName,DataFileName,Category) VALUES(";
     if(useExistingPK || PrefC.RandomKeys) {
         command+=POut.Long(letterMerge.LetterMergeNum)+",";
     }
     command+=
          "'"+POut.String(letterMerge.Description)+"',"
         +"'"+POut.String(letterMerge.TemplateName)+"',"
         +"'"+POut.String(letterMerge.DataFileName)+"',"
         +    POut.Long  (letterMerge.Category)+")";
     if(useExistingPK || PrefC.RandomKeys) {
         Db.NonQ(command);
     }
     else {
         letterMerge.LetterMergeNum=Db.NonQ(command,true);
     }
     return letterMerge.LetterMergeNum;
 }
コード例 #9
0
        ///<summary>Inserts this lettermerge into database.</summary>
        public static void Insert(LetterMerge merge)
        {
            if (PrefB.RandomKeys)
            {
                merge.LetterMergeNum = MiscData.GetKey("lettermerge", "LetterMergeNum");
            }
            string command = "INSERT INTO lettermerge (";

            if (PrefB.RandomKeys)
            {
                command += "LetterMergeNum,";
            }
            command += "Description,TemplateName,DataFileName,"
                       + "Category) VALUES(";
            if (PrefB.RandomKeys)
            {
                command += "'" + POut.PInt(merge.LetterMergeNum) + "', ";
            }
            command +=
                "'" + POut.PString(merge.Description) + "', "
                + "'" + POut.PString(merge.TemplateName) + "', "
                + "'" + POut.PString(merge.DataFileName) + "', "
                + "'" + POut.PInt(merge.Category) + "')";
            //MessageBox.Show(string command);
            if (PrefB.RandomKeys)
            {
                General.NonQ(command);
            }
            else
            {
                merge.LetterMergeNum = General.NonQ(command, true);
            }
        }
コード例 #10
0
ファイル: FormLetterMerges.cs プロジェクト: royedwards/DRDNet
        ///<summary>Shows and error message and returns false if there is a problem creating the data file; Otherwise true.</summary>
        private bool CreateDataFile(string fileName, LetterMerge letter)
        {
            DataTable table;

            try {
                table = LetterMergesQueries.GetLetterMergeInfo(PatCur, letter);
            }
            catch (Exception ex) {
                string message = Lan.g(this, "There was a error getting letter merge info:");
                MessageBox.Show(message + "\r\n" + ex.Message);
                return(false);
            }
            table = FormQuery.MakeReadable(table, null, false);
            try{
                using (StreamWriter sw = new StreamWriter(fileName, false)){
                    string line = "";
                    for (int i = 0; i < letter.Fields.Count; i++)
                    {
                        if (letter.Fields[i].StartsWith("referral."))
                        {
                            line += "Ref" + letter.Fields[i].Substring(9);
                        }
                        else
                        {
                            line += letter.Fields[i];
                        }
                        if (i < letter.Fields.Count - 1)
                        {
                            line += "\t";
                        }
                    }
                    sw.WriteLine(line);
                    string cell;
                    for (int i = 0; i < table.Rows.Count; i++)
                    {
                        line = "";
                        for (int j = 0; j < table.Columns.Count; j++)
                        {
                            cell  = table.Rows[i][j].ToString();
                            cell  = cell.Replace("\r", "");
                            cell  = cell.Replace("\n", "");
                            cell  = cell.Replace("\t", "");
                            cell  = cell.Replace("\"", "");
                            line += cell;
                            if (j < table.Columns.Count - 1)
                            {
                                line += "\t";
                            }
                        }
                        sw.WriteLine(line);
                    }
                }
            }
            catch {
                MsgBox.Show(this, "File in use by another program.  Close and try again.");
                return(false);
            }
            return(true);
        }
コード例 #11
0
        //private ArrayList ALpatSelect;

        ///<summary></summary>
        public FormLetterMergeEdit(LetterMerge letterMergeCur)
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
            LetterMergeCur = letterMergeCur;
            Lan.F(this);
        }
コード例 #12
0
ファイル: FormLetterMerges.cs プロジェクト: royedwards/DRDNet
        private void butViewData_Click(object sender, EventArgs e)
        {
            if (!CreateData())
            {
                return;
            }
            LetterMerge letterCur = ListForCat[listLetters.SelectedIndex];
            string      dataFile  = PrefC.GetString(PrefName.LetterMergePath) + letterCur.DataFileName;

            Process.Start(dataFile);
        }
コード例 #13
0
        ///<summary></summary>
        public static void Update(LetterMerge merge)
        {
            string command = "UPDATE lettermerge SET "
                             + "Description = '" + POut.PString(merge.Description) + "' "
                             + ",TemplateName = '" + POut.PString(merge.TemplateName) + "' "
                             + ",DataFileName = '" + POut.PString(merge.DataFileName) + "' "
                             + ",Category = '" + POut.PInt(merge.Category) + "' "
                             + "WHERE LetterMergeNum = '" + POut.PInt(merge.LetterMergeNum) + "'";

            General.NonQ(command);
        }
コード例 #14
0
        ///<summary>Updates one LetterMerge in the database.</summary>
        public static void Update(LetterMerge letterMerge)
        {
            string command = "UPDATE lettermerge SET "
                             + "Description   = '" + POut.String(letterMerge.Description) + "', "
                             + "TemplateName  = '" + POut.String(letterMerge.TemplateName) + "', "
                             + "DataFileName  = '" + POut.String(letterMerge.DataFileName) + "', "
                             + "Category      =  " + POut.Long(letterMerge.Category) + " "
                             + "WHERE LetterMergeNum = " + POut.Long(letterMerge.LetterMergeNum);

            Db.NonQ(command);
        }
コード例 #15
0
        ///<summary>Updates one LetterMerge 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(LetterMerge letterMerge, LetterMerge oldLetterMerge)
        {
            string command = "";

            if (letterMerge.Description != oldLetterMerge.Description)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "Description = '" + POut.String(letterMerge.Description) + "'";
            }
            if (letterMerge.TemplateName != oldLetterMerge.TemplateName)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "TemplateName = '" + POut.String(letterMerge.TemplateName) + "'";
            }
            if (letterMerge.DataFileName != oldLetterMerge.DataFileName)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "DataFileName = '" + POut.String(letterMerge.DataFileName) + "'";
            }
            if (letterMerge.Category != oldLetterMerge.Category)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "Category = " + POut.Long(letterMerge.Category) + "";
            }
            if (letterMerge.ImageFolder != oldLetterMerge.ImageFolder)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ImageFolder = " + POut.Long(letterMerge.ImageFolder) + "";
            }
            if (command == "")
            {
                return(false);
            }
            command = "UPDATE lettermerge SET " + command
                      + " WHERE LetterMergeNum = " + POut.Long(letterMerge.LetterMergeNum);
            Db.NonQ(command);
            return(true);
        }
コード例 #16
0
        private void SelectImageCat()
        {
            long defNumLetter = 0;

            if (listLetters.Items.Count > 0 && listLetters.SelectedIndex >= 0)
            {
                LetterMerge letterMergeSelected = ListForCat[listLetters.SelectedIndex];
                if (letterMergeSelected != null)
                {
                    defNumLetter = letterMergeSelected.ImageFolder;
                }
            }
            comboImageCategory.SetSelectedDefNum(defNumLetter);
        }
コード例 #17
0
		///<summary>Converts a DataTable to a list of objects.</summary>
		public static List<LetterMerge> TableToList(DataTable table){
			List<LetterMerge> retVal=new List<LetterMerge>();
			LetterMerge letterMerge;
			for(int i=0;i<table.Rows.Count;i++) {
				letterMerge=new LetterMerge();
				letterMerge.LetterMergeNum= PIn.Long  (table.Rows[i]["LetterMergeNum"].ToString());
				letterMerge.Description   = PIn.String(table.Rows[i]["Description"].ToString());
				letterMerge.TemplateName  = PIn.String(table.Rows[i]["TemplateName"].ToString());
				letterMerge.DataFileName  = PIn.String(table.Rows[i]["DataFileName"].ToString());
				letterMerge.Category      = PIn.Long  (table.Rows[i]["Category"].ToString());
				retVal.Add(letterMerge);
			}
			return retVal;
		}
コード例 #18
0
ファイル: FormLetterMerges.cs プロジェクト: royedwards/DRDNet
        private void butEditTemplate_Click(object sender, System.EventArgs e)
        {
#if !DISABLE_MICROSOFT_OFFICE
            if (listLetters.SelectedIndex == -1)
            {
                MsgBox.Show(this, "Please select a letter first.");
                return;
            }
            LetterMerge letterCur    = ListForCat[listLetters.SelectedIndex];
            string      templateFile = ODFileUtils.CombinePaths(PrefC.GetString(PrefName.LetterMergePath), letterCur.TemplateName);
            string      dataFile     = ODFileUtils.CombinePaths(PrefC.GetString(PrefName.LetterMergePath), letterCur.DataFileName);
            if (!File.Exists(templateFile))
            {
                MessageBox.Show(Lan.g(this, "Template file does not exist:") + "  " + templateFile);
                return;
            }
            if (!CreateDataFile(dataFile, letterCur))
            {
                return;
            }
            //Create an instance of Word.
            Word.Application WrdApp;
            try {
                WrdApp = LetterMerges.WordApp;
            }
            catch {
                MsgBox.Show(this, "Error.  Is MS Word installed?");
                return;
            }
            //Open a document.
            Object oName = templateFile;
            wrdDoc = WrdApp.Documents.Open(ref oName, ref oMissing, ref oMissing, ref oMissing,
                                           ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                           ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
            wrdDoc.Select();
            //Attach the data file.
            wrdDoc.MailMerge.OpenDataSource(dataFile, ref oMissing, ref oMissing, ref oMissing,
                                            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
            //At this point, Word remains open with just one new document.
            if (WrdApp.WindowState == Word.WdWindowState.wdWindowStateMinimize)
            {
                WrdApp.WindowState = Word.WdWindowState.wdWindowStateMaximize;
            }
            wrdDoc = null;
#else
            MessageBox.Show(this, "This version of Open Dental does not support Microsoft Word.");
#endif
        }
コード例 #19
0
ファイル: LetterMergeCrud.cs プロジェクト: kjb7749/testImport
 ///<summary>Inserts one LetterMerge into the database.  Returns the new priKey.  Doesn't use the cache.</summary>
 public static long InsertNoCache(LetterMerge letterMerge)
 {
     if (DataConnection.DBtype == DatabaseType.MySql)
     {
         return(InsertNoCache(letterMerge, false));
     }
     else
     {
         if (DataConnection.DBtype == DatabaseType.Oracle)
         {
             letterMerge.LetterMergeNum = DbHelper.GetNextOracleKey("lettermerge", "LetterMergeNum");                  //Cacheless method
         }
         return(InsertNoCache(letterMerge, true));
     }
 }
コード例 #20
0
        private void butAdd_Click(object sender, System.EventArgs e)
        {
            if (listCategories.SelectedIndex == -1)
            {
                MsgBox.Show(this, "Please select a category first.");
                return;
            }
            LetterMerge letter = new LetterMerge();

            letter.Category = _listLetterMergeCatDefs[listCategories.SelectedIndex].DefNum;
            FormLetterMergeEdit FormL = new FormLetterMergeEdit(letter);

            FormL.IsNew = true;
            FormL.ShowDialog();
            FillLetters();
            changed = true;
        }
コード例 #21
0
        ///<summary>Converts a DataTable to a list of objects.</summary>
        public static List <LetterMerge> TableToList(DataTable table)
        {
            List <LetterMerge> retVal = new List <LetterMerge>();
            LetterMerge        letterMerge;

            for (int i = 0; i < table.Rows.Count; i++)
            {
                letterMerge = new LetterMerge();
                letterMerge.LetterMergeNum = PIn.Long(table.Rows[i]["LetterMergeNum"].ToString());
                letterMerge.Description    = PIn.String(table.Rows[i]["Description"].ToString());
                letterMerge.TemplateName   = PIn.String(table.Rows[i]["TemplateName"].ToString());
                letterMerge.DataFileName   = PIn.String(table.Rows[i]["DataFileName"].ToString());
                letterMerge.Category       = PIn.Long(table.Rows[i]["Category"].ToString());
                retVal.Add(letterMerge);
            }
            return(retVal);
        }
コード例 #22
0
        ///<summary>Converts a DataTable to a list of objects.</summary>
        public static List <LetterMerge> TableToList(DataTable table)
        {
            List <LetterMerge> retVal = new List <LetterMerge>();
            LetterMerge        letterMerge;

            foreach (DataRow row in table.Rows)
            {
                letterMerge = new LetterMerge();
                letterMerge.LetterMergeNum = PIn.Long(row["LetterMergeNum"].ToString());
                letterMerge.Description    = PIn.String(row["Description"].ToString());
                letterMerge.TemplateName   = PIn.String(row["TemplateName"].ToString());
                letterMerge.DataFileName   = PIn.String(row["DataFileName"].ToString());
                letterMerge.Category       = PIn.Long(row["Category"].ToString());
                letterMerge.ImageFolder    = PIn.Long(row["ImageFolder"].ToString());
                retVal.Add(letterMerge);
            }
            return(retVal);
        }
コード例 #23
0
        private void listLetters_DoubleClick(object sender, System.EventArgs e)
        {
            if (listLetters.SelectedIndex == -1)
            {
                return;
            }
            int                 selectedRow = listLetters.SelectedIndex;
            LetterMerge         letter      = ListForCat[listLetters.SelectedIndex];
            FormLetterMergeEdit FormL       = new FormLetterMergeEdit(letter);

            FormL.ShowDialog();
            FillLetters();
            if (listLetters.Items.Count > selectedRow)
            {
                listLetters.SetSelected(selectedRow, true);
            }
            changed = true;
        }
コード例 #24
0
        ///<summary>Must have run LetterMergeFields first.</summary>
        public static void Refresh()
        {
            string command =
                "SELECT * FROM lettermerge ORDER BY Description";
            DataTable table = General.GetTable(command);

            List = new LetterMerge[table.Rows.Count];
            for (int i = 0; i < table.Rows.Count; i++)
            {
                List[i] = new LetterMerge();
                List[i].LetterMergeNum = PIn.PInt(table.Rows[i][0].ToString());
                List[i].Description    = PIn.PString(table.Rows[i][1].ToString());
                List[i].TemplateName   = PIn.PString(table.Rows[i][2].ToString());
                List[i].DataFileName   = PIn.PString(table.Rows[i][3].ToString());
                List[i].Category       = PIn.PInt(table.Rows[i][4].ToString());
                List[i].Fields         = LetterMergeFields.GetForLetter(List[i].LetterMergeNum);
            }
        }
コード例 #25
0
        ///<summary>Supply the index of the cat within DefB.Short.</summary>
        public static LetterMerge[] GetListForCat(int catIndex)
        {
            ArrayList AL = new ArrayList();

            for (int i = 0; i < List.Length; i++)
            {
                if (List[i].Category == DefB.Short[(int)DefCat.LetterMergeCats][catIndex].DefNum)
                {
                    AL.Add(List[i]);
                }
            }
            LetterMerge[] retVal = new LetterMerge[AL.Count];
            for (int i = 0; i < AL.Count; i++)
            {
                retVal[i] = (LetterMerge)AL[i];
            }
            return(retVal);
        }
コード例 #26
0
        ///<summary>Updates one LetterMerge 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>
        internal static void Update(LetterMerge letterMerge, LetterMerge oldLetterMerge)
        {
            string command = "";

            if (letterMerge.Description != oldLetterMerge.Description)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "Description = '" + POut.String(letterMerge.Description) + "'";
            }
            if (letterMerge.TemplateName != oldLetterMerge.TemplateName)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "TemplateName = '" + POut.String(letterMerge.TemplateName) + "'";
            }
            if (letterMerge.DataFileName != oldLetterMerge.DataFileName)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "DataFileName = '" + POut.String(letterMerge.DataFileName) + "'";
            }
            if (letterMerge.Category != oldLetterMerge.Category)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "Category = " + POut.Long(letterMerge.Category) + "";
            }
            if (command == "")
            {
                return;
            }
            command = "UPDATE lettermerge SET " + command
                      + " WHERE LetterMergeNum = " + POut.Long(letterMerge.LetterMergeNum);
            Db.NonQ(command);
        }
コード例 #27
0
ファイル: FormLetterMerges.cs プロジェクト: royedwards/DRDNet
        private void SelectImageCat()
        {
            long defNumLetter = 0;

            if (listLetters.Items.Count > 0 && listLetters.SelectedIndex >= 0)
            {
                LetterMerge letterMergeSelected = ListForCat[listLetters.SelectedIndex];
                if (letterMergeSelected != null)
                {
                    defNumLetter = letterMergeSelected.ImageFolder;
                }
            }
            if (defNumLetter != 0)
            {
                comboImageCategory.SetSelectedItem <Def>(x => x.DefNum == defNumLetter, Defs.GetName(DefCat.ImageCats, defNumLetter) + " " + Lan.g(this, "(hidden)"));
            }
            else
            {
                comboImageCategory.SelectedIndex = 0;
            }
        }
コード例 #28
0
        private void butEditTemplate_Click(object sender, System.EventArgs e)
        {
            if (listLetters.SelectedIndex == -1)
            {
                MsgBox.Show(this, "Please select a letter first.");
                return;
            }
            LetterMerge letterCur    = ListForCat[listLetters.SelectedIndex];
            string      templateFile = PrefB.GetString("LetterMergePath") + letterCur.TemplateName;
            string      dataFile     = PrefB.GetString("LetterMergePath") + letterCur.DataFileName;

            if (!File.Exists(templateFile))
            {
                MessageBox.Show(Lan.g(this, "Template file does not exist:") + "  " + templateFile);
                return;
            }
            if (!CreateDataFile(dataFile, letterCur))
            {
                return;
            }
            //Create an instance of Word.
            Word.Application WrdApp = LetterMerges.WordApp;
            //Open a document.
            Object oName = templateFile;

            wrdDoc = WrdApp.Documents.Open(ref oName, ref oMissing, ref oMissing, ref oMissing,
                                           ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                           ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
            wrdDoc.Select();
            //Attach the data file.
            wrdDoc.MailMerge.OpenDataSource(dataFile, ref oMissing, ref oMissing, ref oMissing,
                                            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
            //At this point, Word remains open with just one new document.
            if (WrdApp.WindowState == Word.WdWindowState.wdWindowStateMinimize)
            {
                WrdApp.WindowState = Word.WdWindowState.wdWindowStateMaximize;
            }
            wrdDoc = null;
        }
コード例 #29
0
ファイル: FormLetterMerges.cs プロジェクト: royedwards/DRDNet
        private bool CreateData()
        {
            if (listLetters.SelectedIndex == -1)
            {
                MsgBox.Show(this, "Please select a letter first.");
                return(false);
            }
            LetterMerge letterCur = ListForCat[listLetters.SelectedIndex];
            string      dataFile  = PrefC.GetString(PrefName.LetterMergePath) + letterCur.DataFileName;

            if (!Directory.Exists(PrefC.GetString(PrefName.LetterMergePath)))
            {
                MsgBox.Show(this, "Letter merge path not valid.");
                return(false);
            }
            Cursor = Cursors.WaitCursor;
            if (!CreateDataFile(dataFile, letterCur))
            {
                Cursor = Cursors.Default;
                return(false);
            }
            Cursor = Cursors.Default;
            return(true);
        }
コード例 #30
0
        private void butCreateData_Click(object sender, System.EventArgs e)
        {
            if (listLetters.SelectedIndex == -1)
            {
                MsgBox.Show(this, "Please select a letter first.");
                return;
            }
            LetterMerge letterCur = ListForCat[listLetters.SelectedIndex];
            string      dataFile  = PrefB.GetString("LetterMergePath") + letterCur.DataFileName;

            if (!Directory.Exists(PrefB.GetString("LetterMergePath")))
            {
                MsgBox.Show(this, "Letter merge path not valid.");
                return;
            }
            Cursor = Cursors.WaitCursor;
            if (!CreateDataFile(dataFile, letterCur))
            {
                Cursor = Cursors.Default;
                return;
            }
            Cursor = Cursors.Default;
            MsgBox.Show(this, "done");
        }
コード例 #31
0
 ///<summary>Returns true if Update(LetterMerge,LetterMerge) 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(LetterMerge letterMerge, LetterMerge oldLetterMerge)
 {
     if (letterMerge.Description != oldLetterMerge.Description)
     {
         return(true);
     }
     if (letterMerge.TemplateName != oldLetterMerge.TemplateName)
     {
         return(true);
     }
     if (letterMerge.DataFileName != oldLetterMerge.DataFileName)
     {
         return(true);
     }
     if (letterMerge.Category != oldLetterMerge.Category)
     {
         return(true);
     }
     if (letterMerge.ImageFolder != oldLetterMerge.ImageFolder)
     {
         return(true);
     }
     return(false);
 }
コード例 #32
0
ファイル: FormLetterMerges.cs プロジェクト: royedwards/DRDNet
        private void butPreview_Click(object sender, System.EventArgs e)
        {
#if !DISABLE_MICROSOFT_OFFICE
            if (listLetters.SelectedIndex == -1)
            {
                MsgBox.Show(this, "Please select a letter first.");
                return;
            }
            LetterMerge letterCur = ListForCat[listLetters.SelectedIndex];
            letterCur.ImageFolder = comboImageCategory.SelectedTag <Def>().DefNum;
            string templateFile = ODFileUtils.CombinePaths(PrefC.GetString(PrefName.LetterMergePath), letterCur.TemplateName);
            string dataFile     = ODFileUtils.CombinePaths(PrefC.GetString(PrefName.LetterMergePath), letterCur.DataFileName);
            if (!File.Exists(templateFile))
            {
                MsgBox.Show(this, "Template file does not exist.");
                return;
            }
            if (!CreateDataFile(dataFile, letterCur))
            {
                return;
            }
            Word.MailMerge wrdMailMerge;
            //Create an instance of Word.
            Word.Application WrdApp;
            try{
                WrdApp = LetterMerges.WordApp;
            }
            catch {
                MsgBox.Show(this, "Error. Is Word installed?");
                return;
            }
            string errorMessage = "";
            //Open a document.
            try {
                Object oName = templateFile;
                wrdDoc = WrdApp.Documents.Open(ref oName, ref oMissing, ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
                wrdDoc.Select();
            }
            catch (Exception ex) {
                errorMessage = Lan.g(this, "Error opening document:") + "\r\n" + ex.Message;
                MessageBox.Show(errorMessage);
                return;
            }
            //Attach the data file.
            try {
                wrdMailMerge = wrdDoc.MailMerge;
                wrdDoc.MailMerge.OpenDataSource(dataFile, ref oMissing, ref oMissing, ref oMissing,
                                                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
                wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument;
                wrdMailMerge.Execute(ref oFalse);
            }
            catch (Exception ex) {
                errorMessage = Lan.g(this, "Error attaching data file:") + "\r\n" + ex.Message;
                MessageBox.Show(errorMessage);
                return;
            }
            if (letterCur.ImageFolder != 0)           //if image folder exist for this letter, save to AtoZ folder
            //Open document from the atoz folder.
            {
                try {
                    WrdApp.Activate();
                    string tempFilePath = ODFileUtils.CreateRandomFile(Path.GetTempPath(), GetFileExtensionForWordDoc(templateFile));
                    Object oFileName    = tempFilePath;
                    WrdApp.ActiveDocument.SaveAs(oFileName);                    //save the document to temp location
                    Document doc       = SaveToImageFolder(tempFilePath, letterCur);
                    string   patFolder = ImageStore.GetPatientFolder(PatCur, ImageStore.GetPreferredAtoZpath());
                    string   fileName  = ImageStore.GetFilePath(doc, patFolder);
                    if (!FileAtoZ.Exists(fileName))
                    {
                        throw new ApplicationException(Lans.g("LetterMerge", "Error opening document" + " " + doc.FileName));
                    }
                    FileAtoZ.StartProcess(fileName);
                    WrdApp.ActiveDocument.Close();                    //Necessary since we created an extra document
                    try {
                        File.Delete(tempFilePath);                    //Clean up the temp file
                    }
                    catch (Exception ex) {
                        ex.DoNothing();
                    }
                }
                catch (Exception ex) {
                    FriendlyException.Show(Lan.g(this, "Error saving file to the Image module:") + "\r\n" + ex.Message, ex);
                }
            }
            //Close the original form document since just one record.
            try {
                wrdDoc.Saved = true;
                wrdDoc.Close(ref oFalse, ref oMissing, ref oMissing);
            }
            catch (Exception ex) {
                errorMessage = Lan.g(this, "Error closing document:") + "\r\n" + ex.Message;
                MessageBox.Show(errorMessage);
                return;
            }
            //At this point, Word remains open with just one new document.
            try {
                WrdApp.Activate();
                if (WrdApp.WindowState == Word.WdWindowState.wdWindowStateMinimize)
                {
                    WrdApp.WindowState = Word.WdWindowState.wdWindowStateMaximize;
                }
            }
            catch (Exception ex) {
                errorMessage = Lan.g(this, "Error showing Microsoft Word:") + "\r\n" + ex.Message;
                MessageBox.Show(errorMessage);
                return;
            }
            wrdMailMerge = null;
            wrdDoc       = null;
            Commlog CommlogCur = new Commlog();
            CommlogCur.CommDateTime   = DateTime.Now;
            CommlogCur.CommType       = Commlogs.GetTypeAuto(CommItemTypeAuto.MISC);
            CommlogCur.Mode_          = CommItemMode.Mail;
            CommlogCur.SentOrReceived = CommSentOrReceived.Sent;
            CommlogCur.PatNum         = PatCur.PatNum;
            CommlogCur.Note           = "Letter sent: " + letterCur.Description + ". ";
            CommlogCur.UserNum        = Security.CurUser.UserNum;
            Commlogs.Insert(CommlogCur);
#else
            MessageBox.Show(this, "This version of Open Dental does not support Microsoft Word.");
#endif
            //this window now closes regardless of whether the user saved the comm item.
            DialogResult = DialogResult.OK;
        }
コード例 #33
0
ファイル: FormLetterMerges.cs プロジェクト: royedwards/DRDNet
        private void butPrint_Click(object sender, System.EventArgs e)
        {
#if DISABLE_MICROSOFT_OFFICE
            MessageBox.Show(this, "This version of Open Dental does not support Microsoft Word.");
            return;
#endif
            if (listLetters.SelectedIndex == -1)
            {
                MsgBox.Show(this, "Please select a letter first.");
                return;
            }
            LetterMerge letterCur = ListForCat[listLetters.SelectedIndex];
            letterCur.ImageFolder = comboImageCategory.SelectedTag <Def>().DefNum;
            string templateFile = ODFileUtils.CombinePaths(PrefC.GetString(PrefName.LetterMergePath), letterCur.TemplateName);
            string dataFile     = ODFileUtils.CombinePaths(PrefC.GetString(PrefName.LetterMergePath), letterCur.DataFileName);
            if (!File.Exists(templateFile))
            {
                MsgBox.Show(this, "Template file does not exist.");
                return;
            }
            PrintDocument pd = new PrintDocument();
            if (!PrinterL.SetPrinter(pd, PrintSituation.Default, PatCur.PatNum, "Letter merge " + letterCur.Description + " printed"))
            {
                return;
            }
            if (!CreateDataFile(dataFile, letterCur))
            {
                return;
            }
            Word.MailMerge wrdMailMerge;
            //Create an instance of Word.
            Word.Application WrdApp;
            try {
                WrdApp = LetterMerges.WordApp;
            }
            catch {
                MsgBox.Show(this, "Error.  Is MS Word installed?");
                return;
            }
            //Open a document.
            Object oName = templateFile;
            wrdDoc = WrdApp.Documents.Open(ref oName, ref oMissing, ref oMissing,
                                           ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                           ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
            wrdDoc.Select();
            wrdMailMerge = wrdDoc.MailMerge;
            //Attach the data file.
            wrdDoc.MailMerge.OpenDataSource(dataFile, ref oMissing, ref oMissing, ref oMissing,
                                            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
            wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToPrinter;
            //WrdApp.ActivePrinter=pd.PrinterSettings.PrinterName;
            //replaced with following 4 lines due to MS bug that changes computer default printer
            object   oWBasic   = WrdApp.WordBasic;
            object[] oWBValues = new object[] { pd.PrinterSettings.PrinterName, 1 };
            String[] sWBNames  = new String[] { "Printer", "DoNotSetAsSysDefault" };
            oWBasic.GetType().InvokeMember("FilePrintSetup", BindingFlags.InvokeMethod, null, oWBasic, oWBValues, null, null, sWBNames);
            wrdMailMerge.Execute(ref oFalse);
            if (letterCur.ImageFolder != 0)           //if image folder exist for this letter, save to AtoZ folder
            {
                try {
                    wrdDoc.Select();
                    wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument;
                    wrdMailMerge.Execute(ref oFalse);
                    WrdApp.Activate();
                    string tempFilePath = ODFileUtils.CreateRandomFile(Path.GetTempPath(), GetFileExtensionForWordDoc(templateFile));
                    Object oFileName    = tempFilePath;
                    WrdApp.ActiveDocument.SaveAs(oFileName);                    //save the document
                    WrdApp.ActiveDocument.Close();
                    SaveToImageFolder(tempFilePath, letterCur);
                }
                catch (Exception ex) {
                    FriendlyException.Show(Lan.g(this, "Error saving file to the Image module:") + "\r\n" + ex.Message, ex);
                }
            }
            //Close the original form document since just one record.
            wrdDoc.Saved = true;
            wrdDoc.Close(ref oFalse, ref oMissing, ref oMissing);
            //At this point, Word remains open with no documents.
            WrdApp.WindowState = Word.WdWindowState.wdWindowStateMinimize;
            wrdMailMerge       = null;
            wrdDoc             = null;
            Commlog CommlogCur = new Commlog();
            CommlogCur.CommDateTime   = DateTime.Now;
            CommlogCur.CommType       = Commlogs.GetTypeAuto(CommItemTypeAuto.MISC);
            CommlogCur.Mode_          = CommItemMode.Mail;
            CommlogCur.SentOrReceived = CommSentOrReceived.Sent;
            CommlogCur.PatNum         = PatCur.PatNum;
            CommlogCur.Note           = "Letter sent: " + letterCur.Description + ". ";
            CommlogCur.UserNum        = Security.CurUser.UserNum;
            Commlogs.Insert(CommlogCur);
            DialogResult = DialogResult.OK;
        }
コード例 #34
0
ファイル: LetterMergeCrud.cs プロジェクト: nampn/ODental
 ///<summary>Updates one LetterMerge in the database.</summary>
 internal static void Update(LetterMerge letterMerge)
 {
     string command="UPDATE lettermerge SET "
         +"Description   = '"+POut.String(letterMerge.Description)+"', "
         +"TemplateName  = '"+POut.String(letterMerge.TemplateName)+"', "
         +"DataFileName  = '"+POut.String(letterMerge.DataFileName)+"', "
         +"Category      =  "+POut.Long  (letterMerge.Category)+" "
         +"WHERE LetterMergeNum = "+POut.Long(letterMerge.LetterMergeNum);
     Db.NonQ(command);
 }
コード例 #35
0
ファイル: LetterMergeCrud.cs プロジェクト: nampn/ODental
 ///<summary>Updates one LetterMerge 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>
 internal static void Update(LetterMerge letterMerge,LetterMerge oldLetterMerge)
 {
     string command="";
     if(letterMerge.Description != oldLetterMerge.Description) {
         if(command!=""){ command+=",";}
         command+="Description = '"+POut.String(letterMerge.Description)+"'";
     }
     if(letterMerge.TemplateName != oldLetterMerge.TemplateName) {
         if(command!=""){ command+=",";}
         command+="TemplateName = '"+POut.String(letterMerge.TemplateName)+"'";
     }
     if(letterMerge.DataFileName != oldLetterMerge.DataFileName) {
         if(command!=""){ command+=",";}
         command+="DataFileName = '"+POut.String(letterMerge.DataFileName)+"'";
     }
     if(letterMerge.Category != oldLetterMerge.Category) {
         if(command!=""){ command+=",";}
         command+="Category = "+POut.Long(letterMerge.Category)+"";
     }
     if(command==""){
         return;
     }
     command="UPDATE lettermerge SET "+command
         +" WHERE LetterMergeNum = "+POut.Long(letterMerge.LetterMergeNum);
     Db.NonQ(command);
 }