public string GetMsg(string Msg, Int16 CultureId, string TechnicalUsr, string dbConnectionString, string dbPassword)
        {
            string mm = Msg;

            using (Access3.AdminAccess dac = new Access3.AdminAccess())
            {
                try
                {
                    int ic = mm.IndexOf("{");
                    if (ic >= 0)
                    {
                        mm = mm.Substring(ic, mm.Length - ic);
                        MatchCollection sa = Regex.Matches(mm, @"{[^}]*}");
                        if (sa[0].Value != string.Empty)                                // Found MsgId and process only the first one.
                        {
                            DataTable dt = dac.GetMsg(Int32.Parse(sa[0].Value.Substring(1, sa[0].Value.Length - 2)), CultureId, dbConnectionString, dbPassword);
                            if (dt != null && dt.Rows.Count > 0)
                            {
                                string ss = dt.Rows[0]["Msg"].ToString();
                                for (int ii = 1; ii < sa.Count; ii++)
                                {
                                    ss = SubPar(ss, ii, sa[ii].Value.Substring(1, sa[ii].Value.Length - 2), dt.Rows[0]["CultureTypeName"].ToString());
                                }
                                if (TechnicalUsr == "Y")
                                {
                                    return(dt.Rows[0]["MsgSource"].ToString() + ": " + ss);
                                }
                                else
                                {
                                    return(ss);
                                }
                            }
                            else
                            {
                                return(Msg);
                            }
                        }
                        else
                        {
                            return(Msg);
                        }
                    }
                    else                     // Remove all messages in front including Sybase extra messages between "[" and "]".
                    {
                        int i0 = mm.IndexOf("[");
                        if (i0 >= 0)
                        {
                            int i1 = mm.IndexOf("]");
                            if (i1 >= 0)
                            {
                                int i2 = mm.Substring(i1 + 1).IndexOf("]");
                                if (i2 >= 0)
                                {
                                    mm = mm.Substring(0, i0) + mm.Substring(i1 + i2 + 2).Trim();
                                }
                            }
                        }
                        return(mm);
                    }
                }
                catch { return(Msg); }
            }
        }