public CodeExpression GetReferenceCode(object method, CodeStatementCollection statements, string propertyName, CodeExpression target, bool forValue)
 {
     if (_ps != null)
     {
         return(_ps.GetReferenceCode(method, statements, propertyName, target, forValue));
     }
     if (_pp != null)
     {
         for (int i = 0; i < _pp.Length; i++)
         {
             if (string.Compare(_pp[i].Name, propertyName, StringComparison.OrdinalIgnoreCase) == 0)
             {
                 if (forValue)
                 {
                     return(VPLUtil.ConvertByType(EPField.ToSystemType(_pp[i].Type), new CodePropertyReferenceExpression(new CodeArrayIndexerExpression(target, new CodePrimitiveExpression(propertyName)), "Value")));
                 }
                 else
                 {
                     return(new CodePropertyReferenceExpression(new CodeArrayIndexerExpression(target, new CodePrimitiveExpression(propertyName)), "Value"));
                 }
             }
         }
     }
     return(target);
 }
Exemplo n.º 2
0
 public override object GetValue(object component)
 {
     if (EPField.IsString(_field.OleDbType))
     {
         return(string.Format(CultureInfo.InvariantCulture, "{0}({1})", EPField.ToSystemType(_field.OleDbType).Name, _field.DataSize));
     }
     return(EPField.ToSystemType(_field.OleDbType).Name);
 }
Exemplo n.º 3
0
 public Type GetCustomPropertyType(string name)
 {
     if (_ps != null)
     {
         EPField f = _ps[name];
         if (f != null)
         {
             return(EPField.ToSystemType(f.OleDbType));
         }
     }
     return(typeof(object));
 }
Exemplo n.º 4
0
 public Type GetPropertyType(string propertyName)
 {
     if (_ps != null)
     {
         EPField f = _ps[propertyName];
         if (f != null)
         {
             return(EPField.ToSystemType(f.OleDbType));
         }
     }
     return(null);
 }
 public Type PropertyCodeType(string propertyName)
 {
     if (_ps != null)
     {
         return(_ps.PropertyCodeType(propertyName));
     }
     if (_pp != null)
     {
         for (int i = 0; i < _pp.Length; i++)
         {
             if (string.Compare(_pp[i].Name, propertyName, StringComparison.OrdinalIgnoreCase) == 0)
             {
                 return(EPField.ToSystemType(_pp[i].Type));
             }
         }
     }
     return(null);
 }
 public ParameterInfo[] GetDynamicMethodParameters(string methodName, object attrs)
 {
     if (string.CompareOrdinal(methodName, "StartWithParameterValues") == 0)
     {
         FieldList pl = Parameters;
         if (pl != null && pl.Count > 0)
         {
             ParameterInfo[] ps = new ParameterInfo[pl.Count];
             for (int i = 0; i < pl.Count; i++)
             {
                 EPField f = pl[i];
                 ps[i] = new SimpleParameterInfo(f.Name, methodName, EPField.ToSystemType(f.OleDbType), string.Format(System.Globalization.CultureInfo.InvariantCulture, "parameter {0}", f.Name));
             }
             return(ps);
         }
         return(new ParameterInfo[] { });
     }
     return(null);
 }
Exemplo n.º 7
0
        public string ReceiveData(DataTable tblSrc, bool bSilent)
        {
            string error = string.Empty;

            try
            {
                if (TableName.Length > 0 && _fields != null && connect != null && tblSrc != null)
                {
                    if (_fields.Count > 0 && tblSrc.Columns.Count >= _fields.Count)
                    {
                        if (tblSrc.Rows.Count > 0)
                        {
                            bool bNeedUpdate    = false;
                            bool bNeedUpdateRun = false;
                            int  i;
                            for (i = 0; i < _fields.Count; i++)
                            {
                                if (_fields[i].Indexed)
                                {
                                    bNeedUpdate = true;
                                    break;
                                }
                            }
                            EnumParameterStyle pStyle  = connect.ConnectionObject.ParameterStyle;
                            string             n1      = connect.ConnectionObject.NameDelimiterBegin;
                            string             n2      = connect.ConnectionObject.NameDelimiterEnd;
                            string             sInsert = StringUtility.FormatInvString(
                                "INSERT INTO {0}{1}{2} ({0}{3}{2}",
                                n1, TableName, n2, _fields[0].Name);

                            string sValues = _fields[0].GetParameterName(pStyle);
                            string sUpdate = StringUtility.FormatInvString(
                                "UPDATE {0}{1}{2} SET ",
                                n1, TableName, n2);
                            string sExist;
                            if (connect.ConnectionObject.IsJet || connect.ConnectionObject.IsMSSQL)
                            {
                                sExist = StringUtility.FormatInvString(
                                    "SELECT TOP 1 1 FROM {0}{1}{2} WHERE ",
                                    n1, TableName, n2);
                            }
                            else
                            {
                                sExist = StringUtility.FormatInvString(
                                    "SELECT 1 FROM {0}{1}{2} WHERE ",
                                    n1, TableName, n2);
                            }
                            string sWhere = "";
                            int    k = 0, n = 0;
                            if (bNeedUpdate)
                            {
                                if (_fields[0].Indexed)
                                {
                                    sWhere = StringUtility.FormatInvString(
                                        "{0}{1}{2}={3}", n1, _fields[0].Name, n2, _fields[0].GetParameterName(pStyle));
                                }
                                else
                                {
                                    sUpdate += StringUtility.FormatInvString("{0}{1}{2}={3}", n1, _fields[0].Name, n2, _fields[0].GetParameterName(pStyle));
                                    k++;
                                }
                                for (i = 0; i < _fields.Count; i++)
                                {
                                    if (_fields[i].Indexed)
                                    {
                                        if (n == 0)
                                        {
                                            sExist += StringUtility.FormatInvString("{0}{1}{2}={3}", n1, _fields[i].Name, n2, _fields[i].GetParameterName(pStyle));
                                        }
                                        else
                                        {
                                            sExist += StringUtility.FormatInvString(" AND {0}{1}{2}={3}", n1, _fields[i].Name, n2, _fields[i].GetParameterName(pStyle));
                                        }
                                        n++;
                                    }
                                }
                            }
                            for (i = 1; i < _fields.Count; i++)
                            {
                                sInsert += StringUtility.FormatInvString(",{0}{1}{2}", n1, _fields[i].Name, n2);
                                sValues += "," + _fields[i].GetParameterName(pStyle);
                                if (bNeedUpdate)
                                {
                                    if (_fields[i].Indexed)
                                    {
                                        if (sWhere.Length == 0)
                                        {
                                            sWhere = StringUtility.FormatInvString("{0}{1}{2}={3}", n1, _fields[i].Name, n2, _fields[i].GetParameterName(pStyle));
                                        }
                                        else
                                        {
                                            sWhere += StringUtility.FormatInvString(" AND {0}{1}{2}={3}", n1, _fields[i].Name, n2, _fields[i].GetParameterName(pStyle));
                                        }
                                    }
                                    else
                                    {
                                        if (k == 0)
                                        {
                                            sUpdate += StringUtility.FormatInvString("{0}{1}{2}={3}", n1, _fields[i].Name, n2, _fields[i].GetParameterName(pStyle));
                                        }
                                        else
                                        {
                                            sUpdate += StringUtility.FormatInvString(",{0}{1}{2}={3}", n1, _fields[i].Name, n2, _fields[i].GetParameterName(pStyle));
                                        }
                                        k++;
                                    }
                                }
                            }
                            if (bNeedUpdate && k > 0)
                            {
                                bNeedUpdateRun = true;
                            }
                            sInsert += ") VALUES (";
                            sInsert += sValues;
                            sInsert += ")";
                            //
                            connect.ConnectionObject.Open();
                            //
                            if (connect.ConnectionObject.IsMSSQL)
                            {
                                dbWrapper dbHelp = new dbWrapper();
                                dbHelp.CreateCommand(connect.ConnectionObject);
                                string sHelp = string.Format(CultureInfo.InvariantCulture, "SET IDENTITY_INSERT {0} ON", TableName);
                                dbHelp.SetCommandText(sHelp);
                                dbHelp.ExecuteNonQuery();
                            }
                            //
                            dbWrapper dbUpdate = null;
                            dbWrapper dbExists = null;
                            dbWrapper dbInsert = new dbWrapper();
                            dbInsert.CreateCommand(connect.ConnectionObject);
                            dbInsert.SetCommandText(sInsert);
                            //
                            object vExist;
                            bool   bInsert;
                            //
                            for (i = 0; i < _fields.Count; i++)
                            {
                                dbInsert.AddCommandParameter(_fields[i], pStyle);
                            }
                            //
                            if (bNeedUpdate)
                            {
                                if (bNeedUpdateRun)
                                {
                                    dbUpdate = new dbWrapper();
                                    dbUpdate.CreateCommand(connect.ConnectionObject);
                                    dbUpdate.SetCommandText(StringUtility.FormatInvString("{0} WHERE {1}", sUpdate, sWhere));
                                }
                                dbExists = new dbWrapper();
                                dbExists.CreateCommand(connect.ConnectionObject);
                                dbExists.SetCommandText(sExist);
                                for (i = 0; i < _fields.Count; i++)
                                {
                                    if (_fields[i].Indexed)
                                    {
                                        dbExists.AddCommandParameter(_fields[i], pStyle);
                                    }
                                    else
                                    {
                                        if (bNeedUpdateRun)
                                        {
                                            dbUpdate.AddCommandParameter(_fields[i], pStyle);
                                        }
                                    }
                                }
                                if (bNeedUpdateRun)
                                {
                                    for (i = 0; i < _fields.Count; i++)
                                    {
                                        if (_fields[i].Indexed)
                                        {
                                            dbUpdate.AddCommandParameter(_fields[i], pStyle);
                                        }
                                    }
                                }
                            }
                            for (int m = 0; m < tblSrc.Rows.Count; m++)
                            {
                                bInsert = true;
                                if (bNeedUpdate)
                                {
                                    k = 0;
                                    for (i = 0; i < _fields.Count; i++)
                                    {
                                        if (_fields[i].Indexed)
                                        {
                                            dbExists.SetParameterValue(k, tblSrc.Rows[m][i]);
                                            k++;
                                        }
                                    }
                                    vExist = dbExists.ExecuteScalar();
                                    if (vExist != null && vExist != System.DBNull.Value)
                                    {
                                        bInsert = false;
                                    }
                                    if (!bInsert)
                                    {
                                        if (bNeedUpdateRun)
                                        {
                                            k = 0;
                                            for (i = 0; i < _fields.Count; i++)
                                            {
                                                if (!_fields[i].Indexed)
                                                {
                                                    if (dbUpdate.Parameters[k].DbType == System.Data.DbType.Binary)
                                                    {
                                                        object v = tblSrc.Rows[m][i];
                                                        if (v == null || v == System.DBNull.Value)
                                                        {
                                                            dbUpdate.Parameters[k].Value = System.DBNull.Value;
                                                        }
                                                        else
                                                        {
                                                            string s  = v.ToString();
                                                            byte[] bs = StringUtility.StringToBytes(s);
                                                            dbUpdate.Parameters[k].Value = bs;
                                                        }
                                                    }
                                                    else
                                                    {
                                                        dbUpdate.Parameters[k].Value = tblSrc.Rows[m][i];
                                                    }
                                                    k++;
                                                }
                                            }
                                            for (i = 0; i < _fields.Count; i++)
                                            {
                                                if (_fields[i].Indexed)
                                                {
                                                    if (dbUpdate.Parameters[k].DbType == System.Data.DbType.Binary)
                                                    {
                                                        object v = tblSrc.Rows[m][i];
                                                        if (v == null || v == System.DBNull.Value)
                                                        {
                                                            dbUpdate.Parameters[k].Value = System.DBNull.Value;
                                                        }
                                                        else
                                                        {
                                                            string s  = v.ToString();
                                                            byte[] bs = StringUtility.StringToBytes(s);
                                                            dbUpdate.Parameters[k].Value = bs;
                                                        }
                                                    }
                                                    else
                                                    {
                                                        dbUpdate.Parameters[k].Value = tblSrc.Rows[m][i];
                                                    }
                                                    k++;
                                                }
                                            }
                                            dbUpdate.ExecuteNonQuery();
                                        }
                                    }
                                }
                                if (bInsert)
                                {
                                    for (i = 0; i < _fields.Count; i++)
                                    {
                                        object v = tblSrc.Rows[m][i];
                                        if (v == null || v == System.DBNull.Value)
                                        {
                                            dbInsert.Parameters[i].Value = System.DBNull.Value;
                                        }
                                        else
                                        {
                                            if (dbInsert.Parameters[i].DbType == System.Data.DbType.Binary)
                                            {
                                                string s  = v.ToString();
                                                byte[] bs = StringUtility.StringToBytes(s);
                                                dbInsert.Parameters[i].Value = bs;
                                            }
                                            else
                                            {
                                                bool   b;
                                                object v2 = VPLUtil.ConvertObject(v, EPField.ToSystemType(dbInsert.Parameters[i].DbType), out b);
                                                dbInsert.Parameters[i].Value = v2;
                                            }
                                        }
                                    }
                                    dbInsert.ExecuteNonQuery();
                                }
                            }
                            if (connect.ConnectionObject.IsMSSQL)
                            {
                                dbWrapper dbHelp = new dbWrapper();
                                dbHelp.CreateCommand(connect.ConnectionObject);
                                string sHelp = string.Format(CultureInfo.InvariantCulture, "SET IDENTITY_INSERT {0} OFF", TableName);
                                dbHelp.SetCommandText(sHelp);
                                dbHelp.ExecuteNonQuery();
                            }
                            connect.ConnectionObject.Close();
                            //
                        }
                    }
                }
            }
            catch (Exception er)
            {
                error = ExceptionLimnorDatabase.FormExceptionText(er, "Error saving data to database");
                TraceLogClass.TraceLog.ShowMessageBox = !bSilent;
                TraceLogClass.TraceLog.Log(er);
            }
            finally
            {
                connect.ConnectionObject.Close();
            }
            return(error);
        }
 public override void ResetValue(object component)
 {
     _param.Field.Value = VPLUtil.GetDefaultValue(EPField.ToSystemType(_param.Type));
 }
        public PropertyDescriptorCollection GetProperties(Attribute[] attributes)
        {
            PropertyDescriptorCollection ps   = TypeDescriptor.GetProperties(this, attributes, true);
            List <PropertyDescriptor>    list = new List <PropertyDescriptor>();

            foreach (PropertyDescriptor p in ps)
            {
                if (string.Compare(p.Name, "DefaultValue", StringComparison.Ordinal) == 0)
                {
                    PropertyDescriptorValue p0 = new PropertyDescriptorValue(p.Name, attributes, EPField.ToSystemType(_p.OleDbType), this);
                    list.Add(p0);
                }
                else if (string.Compare(p.Name, "Name", StringComparison.Ordinal) == 0)
                {
                    if (this.CanChangeName)
                    {
                        list.Add(p);
                    }
                    else
                    {
                        PropertyDescriptorForDisplay p0 = new PropertyDescriptorForDisplay(this.GetType(), "Name", this.Name, attributes);
                        list.Add(p0);
                    }
                }
                else
                {
                    list.Add(p);
                }
            }
            ps = new PropertyDescriptorCollection(list.ToArray());
            return(ps);
        }