Example #1
0
        public void CheckTable(Lfx.Types.OperationProgress progreso, Lfx.Data.Table table)
        {
            Lfx.Data.TableStructure CurrentTableDef = this.Connection.GetTableStructure(table.Name, true);
            progreso.ChangeStatus("Verificando tabla " + table.Name);

            foreach (Lfx.Data.ConstraintDefinition Cons in CurrentTableDef.Constraints.Values)
            {
                // Elimino valores 0 (los pongo en NULL)
                qGen.Update PonerNullablesEnNull = new qGen.Update(table.Name);
                PonerNullablesEnNull.ColumnValues.AddWithValue(Cons.Column, null);
                PonerNullablesEnNull.WhereClause = new qGen.Where(Cons.Column, 0);
                this.Connection.ExecuteNonQuery(PonerNullablesEnNull);

                // Busco problemas de integridad referencial
                if (Cons.TableName != Cons.ReferenceTable)
                {
                    qGen.Select RefValidas = new qGen.Select(Cons.ReferenceTable);
                    RefValidas.Columns = new qGen.SqlIdentifierCollection()
                    {
                        Cons.ReferenceColumn
                    };

                    qGen.Update ElimRefInvalidas = new qGen.Update(table.Name);
                    switch (Cons.ReferenceTable)
                    {
                    case "bancos":
                        // Los bancos inexistentes los remplazo por "otro banco"
                        ElimRefInvalidas.ColumnValues.AddWithValue(Cons.Column, 99);
                        break;

                    case "personas":
                        // Las personas inexistentes las paso a Administrador
                        ElimRefInvalidas.ColumnValues.AddWithValue(Cons.Column, 1);
                        break;

                    default:
                        // El resto lo pongo en null
                        ElimRefInvalidas.ColumnValues.AddWithValue(Cons.Column, null);
                        break;
                    }
                    ElimRefInvalidas.WhereClause = new qGen.Where(Cons.Column, qGen.ComparisonOperators.NotIn, RefValidas);

                    System.Console.WriteLine(ElimRefInvalidas.ToString());
                    this.Connection.ExecuteNonQuery(ElimRefInvalidas);
                }
            }
        }
Example #2
0
                public void CheckTable(Lfx.Types.OperationProgress progreso, Lfx.Data.Table table)
                {
                        Lfx.Data.TableStructure CurrentTableDef = this.DataBase.GetTableStructure(table.Name, true);
                        progreso.ChangeStatus("Verificando tabla " + table.Name);

                        foreach (Lfx.Data.ConstraintDefinition Cons in CurrentTableDef.Constraints.Values) {
                                // Elimino valores 0 (los pongo en NULL)
                                qGen.Update PonerNullablesEnNull = new qGen.Update(table.Name);
                                PonerNullablesEnNull.Fields.AddWithValue(Cons.Column, null);
                                PonerNullablesEnNull.WhereClause = new qGen.Where(Cons.Column, 0);
                                this.DataBase.Execute(PonerNullablesEnNull);

                                // Busco problemas de integridad referencial
                                if (Cons.TableName != Cons.ReferenceTable) {
                                        qGen.Select RefValidas = new qGen.Select(Cons.ReferenceTable);
                                        RefValidas.Fields = Cons.ReferenceColumn;

                                        qGen.Update ElimRefInvalidas = new qGen.Update(table.Name);
                                        switch(Cons.ReferenceTable) {
                                                case "bancos":
                                                        // Los bancos inexistentes los remplazo por "otro banco"
                                                        ElimRefInvalidas.Fields.AddWithValue(Cons.Column, 99);
                                                        break;
                                                case "personas":
                                                        // Las personas inexistentes las paso a Administrador
                                                        ElimRefInvalidas.Fields.AddWithValue(Cons.Column, 1);
                                                        break;
                                                default:
                                                        // El resto lo pongo en null
                                                        ElimRefInvalidas.Fields.AddWithValue(Cons.Column, null);
                                                        break;
                                        }
                                        ElimRefInvalidas.WhereClause = new qGen.Where(Cons.Column, qGen.ComparisonOperators.NotIn, RefValidas);

                                        System.Console.WriteLine(ElimRefInvalidas.ToString());
                                        this.DataBase.Execute(ElimRefInvalidas);
                                }
                        }
                }