コード例 #1
0
ファイル: BindEngine.cs プロジェクト: INGMMV01/EccGenerator
        internal BindEngine(string name, FieldArray fields, IDictionary extendedProperties)
            : base(extendedProperties)
        {
            this.fields = fields;

            _name = name;

            ParsePattern();
        }
コード例 #2
0
ファイル: BindClass.cs プロジェクト: INGMMV01/EccGenerator
        internal BindClass(FieldArray fields, string name, IDictionary extendedProperties)
            : base(extendedProperties)
        {
            this.fields = fields;

            declarations = new BindArray();
            instances = new BindArray();
            properties = new BindArray();

            _name = name;

            Parse(fields);

            ParsePattern();
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: INGMMV01/EccGenerator
        private FieldArray RecuperaCampos()
        {
            FieldArray ret = new FieldArray();

            foreach(ListViewItem lvi in lvCampos.Items)
            {
                ret.Add((Field)lvi.Tag);
            }

            return ret;
        }
コード例 #4
0
ファイル: SqlExtractor.cs プロジェクト: INGMMV01/EccGenerator
        public static string CreateDeleteProcedure(string aplicacion, string tablename, FieldArray fields, string entidad)
        {
            /*
             CREATE PROCEDURE [dbo].[RPOSXXX_entidad_I]
                @alias1 AS dbotype,
                @alias2 AS dbotype
             AS
             BEGIN
                DELETE FROM tablename
                WHERE  field1 = @alias1
             END
             */
            const string PARAM_FORMAT = "\n\t@{0} AS {1},";
            const string WHERE_FORMAT = "{0} = @{1}\n\t\t\t  AND ";

            string spName = GetSPName(aplicacion,entidad,SPType.Delete);

            string SP_FORMAT =
                "CREATE PROCEDURE [dbo].[" + spName + "] \n" +
                "\t{0}\n" +
                "AS\n" +
                "BEGIN\n" +
                "\tDELETE FROM " + tablename +  " \n" +
                "\tWHERE {1} \n" +
                "END;";

            string paramPart = "";
            string wherePart = "";

            foreach(Field fld in fields)
            {
                if(fld.Alias == null || fld.Alias == "") fld.Alias = fld.Name;
            }

            string[] pks = GetPrimaryKeys(tablename);

            foreach(string pk in pks)
            {
                Field field = null;
                foreach(Field fld in fields)
                {
                    if(fld.Name == pk)
                    {
                        field = fld;
                        break;
                    }
                }

                if(field != null)
                {
                    string nParam = string.Format(PARAM_FORMAT, field.Alias, field.DBDefinition);
                    paramPart += nParam;
                    string nWhere = string.Format(WHERE_FORMAT, field.Name, field.Alias);
                    wherePart += nWhere;
                }
            }

            paramPart = CleanSPPart(paramPart);
            wherePart = CleanSPPart(wherePart);

            if(wherePart.Length > 0)wherePart = wherePart.Remove(wherePart.Length - 4, 4);

            return string.Format(SP_FORMAT, paramPart, wherePart);
        }
コード例 #5
0
ファイル: SqlExtractor.cs プロジェクト: INGMMV01/EccGenerator
        public static FieldArray GetTableFields_old(string tablename)
        {
            using(SqlConnection cnn = new SqlConnection(Configuracion.valor("DSNBD")))
            {
                SqlCommand comm = new SqlCommand();
                DataTable dtt;

                comm.CommandText = "SELECT TOP 0 * FROM " + tablename + " FOR XML AUTO, XMLDATA";
                comm.Connection = cnn;
                comm.CommandType = CommandType.Text;

                cnn.Open();

                XmlReader xr = comm.ExecuteXmlReader();

                DataSet ds = new DataSet();
                ds.ReadXml(xr);
                dtt = ds.Tables[0];

                FieldArray ret = new FieldArray();

                foreach(DataColumn dtc in dtt.Columns)
                {
                    TypeEntry te = Pattern.GetBaseType(dtc.DataType.Name);

                    if(te != null)
                    {
                        Field fld = new Field();
                        fld.Name = dtc.ColumnName;
                        fld.Type = te;

                        ret.Add(fld);
                    }
                }

                cnn.Close();

                return ret;
            }
        }
コード例 #6
0
ファイル: SqlExtractor.cs プロジェクト: INGMMV01/EccGenerator
        public static FieldArray GetTableFields(string tablename)
        {
            using(OleDbConnection cnn = new OleDbConnection("Provider=SQLOLEDB;" + Configuracion.valor("DSNBD")))
            {
                string[] strcnn = Configuracion.valor("DSNBD").Split(';');
                string catalog = null;

                foreach(string str in strcnn)
                {
                    string[] subs = str.Split('=');
                    if(subs[0].ToLower() == "initial catalog")
                    {
                        catalog = subs[1];
                        break;
                    }
                }

                FieldArray ret = new FieldArray();

                cnn.Open();
                DataTable tbl = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,new object[]{ catalog, "dbo", tablename });

                foreach(DataRow row in tbl.Rows)
                {
                    Field fld = new Field();

                    SetOledbType(fld, row.ItemArray);

                    if(fld.Type != null)
                    {
                        fld.Name = (string)row.ItemArray[SCHEMA_COLUMN_NAME];
                        fld.Nullable = (bool)row.ItemArray[SCHEMA_IS_NULLABLE];

                        ret.Add(fld);
                    }
                }
                cnn.Close();

                return ret;
            }
        }
コード例 #7
0
ファイル: SqlExtractor.cs プロジェクト: INGMMV01/EccGenerator
        public static string CreateInsertProcedure(string aplicacion, string tablename, FieldArray fields, string entidad)
        {
            /*
             CREATE PROCEDURE [dbo].[RPOSXXX_entidad_I]
                @alias1 AS dbotype,
                @alias2 AS dbotype
             AS
             BEGIN
                INSERT INTO tablename
                        (field1,field2,field3)
                VALUES	(@alias1,@alias2,@alias3)
             END
             */
            const string PARAM_FORMAT = "\n\t@{0} AS {1},";
            const string FIELD_FORMAT = "\n\t\t\t{0},";
            const string VALUE_FORMAT = "\n\t\t\t@{0},";

            string spName = GetSPName(aplicacion,entidad,SPType.Insert);

            string SP_FORMAT =
                "CREATE PROCEDURE [dbo].[" + spName + "] \n" +
                "{0}\n" +
                "AS\n" +
                "BEGIN\n" +
                "\tINSERT INTO " + tablename +  " \n" +
                "\t\t\t({1})\n" +
                "\t\t\tVALUES({2}) \n" +
                "END;";

            string paramPart = "";
            string fieldsPart = "";
            string valuesPart = "";

            foreach(Field fld in fields)
            {
                if(fld.Alias == null || fld.Alias == "") fld.Alias = fld.Name;

                paramPart += string.Format(PARAM_FORMAT, fld.Alias, fld.DBDefinition);
                fieldsPart += string.Format(FIELD_FORMAT, fld.Name);
                valuesPart += string.Format(VALUE_FORMAT, fld.Alias);
            }

            paramPart = CleanSPPart(paramPart);
            fieldsPart = CleanSPPart(fieldsPart);
            valuesPart = CleanSPPart(valuesPart);

            return string.Format(SP_FORMAT, paramPart, fieldsPart, valuesPart);
        }
コード例 #8
0
ファイル: BindElement.cs プロジェクト: INGMMV01/EccGenerator
 protected static Field FindFieldByTableName(FieldArray fields, string name)
 {
     foreach(Field field in fields)
     {
         if(field.Name == name)
             return field;
     }
     return null;
 }
コード例 #9
0
ファイル: Binder.cs プロジェクト: INGMMV01/EccGenerator
        public static string BindEngine(string entidad, FieldArray fields, IDictionary extendedProperties)
        {
            BindEngine bindengine = new BindEngine(entidad, fields, extendedProperties);

            return bindengine.ToString();
        }
コード例 #10
0
ファイル: Binder.cs プロジェクト: INGMMV01/EccGenerator
        public static string BindClass(string entidad, FieldArray fields, IDictionary extendedProperties)
        {
            BindClass bindclass = new BindClass(fields, entidad, extendedProperties);

            return bindclass.ToString();
        }
コード例 #11
0
ファイル: BindClass.cs プロジェクト: INGMMV01/EccGenerator
 internal BindClass(FieldArray fields, string name)
     : this(fields, name, null)
 {
 }
コード例 #12
0
ファイル: BindClass.cs プロジェクト: INGMMV01/EccGenerator
        private void Parse(FieldArray fields)
        {
            foreach(Field field in fields)
            {
                BindDeclaration decl = new BindDeclaration(field, this.ExtendedInfo);
                declarations.Add(decl);

                BindInstance inst = new BindInstance(field, this.ExtendedInfo);
                instances.Add(inst);

                BindProperty prop = new BindProperty(field, this.ExtendedInfo);
                properties.Add(prop);
            }
        }
コード例 #13
0
ファイル: BindEngine.cs プロジェクト: INGMMV01/EccGenerator
 internal BindEngine(string name, FieldArray fields)
     : this(name, fields, null)
 {
 }