Entegrasyon yazılımı yaparken dikkat edilmesi gereken hususlar

entegrasyon yapacak arkadaşlar için notlar:
*Entegrasyon yapılırken önemli olan entegrasyon yapılacak tarafta olması gereken verilerin dışında inserted_datetime, modified_datetime ve uniuqeid yoksa eklettirilmesi çok büyük avantajdır(dublicate kayıtları önler).
*synctable = Entegrasyon nereye olacaksa tablolara entegrsayon başladığında sync=1 olacak bir tablo yaratılırsa ve bitince tekrar 0 yaparsa çakışmayı onler.
*syncdatetimetable = Entegrasyon yapılan her modul icin bir tablo daha yaratılıp modul ismi ve son entegrasyon tarihi alanları olursa başın ağrımaz(dublicate kayıtları önler).

MS SQL TO C# CLASS

declare @TableName sysname = 'CFGUSERSLIST'
declare @result varchar(max) = 'public class ' + @TableName + '
{'

select @result = @result + '
    public ' + ColumnType + ' ' + ColumnName + ' { get; set; }
'
from
(
    select 
        replace(col.name, ' ', '_') ColumnName,
        column_id,
        case typ.name 
            when 'bigint' then 'long'
            when 'binary' then 'byte[]'
            when 'bit' then 'bool'
            when 'char' then 'string'
            when 'date' then 'DateTime'
            when 'datetime' then 'DateTime'
            when 'datetime2' then 'DateTime'
            when 'datetimeoffset' then 'DateTimeOffset'
            when 'decimal' then 'decimal'
            when 'float' then 'float'
            when 'image' then 'byte[]'
            when 'int' then 'int'
            when 'money' then 'decimal'
            when 'nchar' then 'char'
            when 'ntext' then 'string'
            when 'numeric' then 'decimal'
            when 'nvarchar' then 'string'
            when 'real' then 'double'
            when 'smalldatetime' then 'DateTime'
            when 'smallint' then 'short'
            when 'smallmoney' then 'decimal'
            when 'text' then 'string'
            when 'time' then 'TimeSpan'
            when 'timestamp' then 'DateTime'
            when 'tinyint' then 'byte'
            when 'uniqueidentifier' then 'Guid'
            when 'varbinary' then 'byte[]'
            when 'varchar' then 'string'
            else 'UNKNOWN_' + typ.name
        end + 
        CASE
            WHEN col.is_nullable=1 AND
                 typ.name NOT IN (
                     'binary', 'varbinary', 'image',
                     'text', 'ntext',
                     'varchar', 'nvarchar', 'char', 'nchar')
            THEN '?'
            ELSE '' END AS [ColumnType]
    from sys.columns col
        join sys.types typ on
            col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id 
    where object_id = object_id(@TableName)
) t
order by column_id

set @result = @result  + '
}'

print @result

C# GRIDVIEW ALTTOPLAM GUNCELLEME

        private void gridView1_CustomDrawFooterCell(object sender, DevExpress.XtraGrid.Views.Grid.FooterCellCustomDrawEventArgs e) {
            try {

                if (e.Column == GR_GECIKMIS_ALACAK_YUZDESI) {
                    double BAKIYE = double.Parse(gridView1.Columns["BAKIYE"].SummaryItem.SummaryValue.ToString());
                    double TUTAR = double.Parse(gridView1.Columns["TUTAR"].SummaryItem.SummaryValue.ToString());
                    double YORAN = Math.Round( (BAKIYE / TUTAR)*100,2);
                    GridView view = (GridView)sender;
                    e.Info.DisplayText ="%"+ YORAN.ToString();
                }

            } catch {

            }
        }

C# NOTLARIM

Devexpress kullanımında gridview kullanırken setgridvalue kullanmak yerine datatableda gerekli değişiklikleri yaptıktan sonra gridccontrolun datasourceunu datatablea eşitlemek daha sorunsuz olur. Sebebi gridview count kullanırken bazı değerleri setgridvalueda atmamakta ama filtreleyince atmakta.

C# SQL GET LOGICALREF

        public string GET_LOGICALREF(string TABLENAME, string LOGICALREF, string WHEREFIELDNAME, string WHEREDATA) {
            SqlDatabase sqlSERVICEDB;
            sqlSERVICEDB = new SqlDatabase(M.CONSTR_BMS);
            DataTable DATA = sqlSERVICEDB.ExecuteDataSet(new SqlCommand("SELECT TOP 1 " + LOGICALREF + " FROM " + TABLENAME + " WHERE " + WHEREFIELDNAME + "='" + WHEREDATA + "' ORDER BY LOGICALREF DESC")).Tables[0];
            if (DATA.Rows.Count == 0) {
                return "";
            }
            return DATA.Rows[0][0].ToString();
        }

C++ NATIVE DLL C#DA ÇALIŞTIRMAK İÇİN

Önce indir Dependency Walker ve dll içinde aç

c# tarafında bu şekilde tanımla

  public Login() {
            InitializeComponent();
            XAPI_Client_digits();
            // XAPI_Adjunct_start();
            //XAPI_Adjunct_stop();
            //XAPI_Client_answer();
            //XAPI_Client_bdp_answer();
            //XAPI_Client_bdp_intrude();
            //XAPI_Client_bdp_register();
            // XAPI_Client_callb();
            //XAPI_Client_clear();
            //XAPI_Client_conference();
            //XAPI_Client_deflect();
            //XAPI_Client_digits();
            //XAPI_Client_hold();
            //XAPI_Client_mailbox();
            //XAPI_Client_newcall();
            //XAPI_Client_record_start();
            //XAPI_Client_record_stop();
            //XAPI_Client_resume();
            //XAPI_Client_retrieve();
            //XAPI_Client_start();
            //XAPI_Client_start_Thread();
            //XAPI_Client_stop();
            //XAPI_Client_suspend();
            //XAPI_Client_transfer();
            //XAPI_Client_transfer_undo();
            //XAPI_Cmdr_start();
            //XAPI_Cmdr_stop();
            //XAPI_Stack_initialize();
            XAPI_Client_digits();
            string TEST = "";
        }
        [DllImport("XapiDll.dll", CharSet = CharSet.Unicode)]
        //[DllImport("XapiDll.dll", CharSet = CharSet.Unicode,CallingConvention =CallingConvention.Cdecl)]
        public static extern void XAPI_Client_digits();
       // public static extern void XAPI_Adjunct_start();
       // public static extern void XAPI_Adjunct_stop();
        //public static extern void XAPI_Client_answer();
        //public static extern void XAPI_Client_bdp_answer();
        //public static extern void XAPI_Client_bdp_intrude();
       // public static extern void XAPI_Client_bdp_register();
        //public static extern void XAPI_Client_callb();
        //public static extern void XAPI_Client_clear();
        //public static extern void XAPI_Client_conference();
        //public static extern void XAPI_Client_deflect();
        //public static extern void XAPI_Client_digits();
        //public static extern void XAPI_Client_hold();
        //public static extern void XAPI_Client_mailbox();
        //public static extern void XAPI_Client_newcall();
        //public static extern void XAPI_Client_record_start();
        //public static extern void XAPI_Client_record_stop();
        //public static extern void XAPI_Client_resume();
        //public static extern void XAPI_Client_retrieve();
        //public static extern void XAPI_Client_start();
        //public static extern void XAPI_Client_start_Thread();
        //public static extern void XAPI_Client_stop();
        //public static extern void XAPI_Client_suspend();
        //public static extern void XAPI_Client_transfer();
        //public static extern void XAPI_Client_transfer_undo();
        //public static extern void XAPI_Cmdr_start();
        //public static extern void XAPI_Cmdr_stop();
        //public static extern void XAPI_Stack_initialize();
      //  public static extern void XAPI_Stack_release();

Devexpress XtraGridView büyük datada update işlemi

        public DLG_TAKVIM() {

            InitializeComponent();
            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
            BMS_DLL.CFGGETSET.AYARLARIYUKLE();
            gridControl1.DataSource = BMS_DLL.SQL.SELECT("select * from (SELECT dt, Ay, Gün, Hafta, Saat, Açıklama, Saat Old_Saat, Açıklama Old_Açıklama FROM BM_PDKS_TAKVIM WITH(NOLOCK)) as t");
        }
        private void GUNCELLE() {
            try {
                DataTable DT = (DataTable)gridControl1.DataSource;
                DataRow[] DT_NEW = DT.Select("(Saat <> Old_Saat) OR (Açıklama <> Old_Açıklama)");
                if (DT_NEW != null && DT_NEW.Length > 0) {
                    foreach (DataRow R in DT_NEW) {
                        DateTime _DT= (DateTime)R["dt"];
                        double SAAT = (double)R["Saat"];
                        string ACIKLAMA = (string)R["Açıklama"];
                        BMS_DLL.SQL.EXECUTE(this, "UPDATE BM_PDKS_TAKVIM SET Saat='"+ SAAT + "' , Açıklama='"+ ACIKLAMA + "' WHERE dt='"+_DT+"' ");
                    }

                }
            } catch { }
        }

Yukarıdaki kodda gridview üzerinden deişen alanları alıp(saat,açıklama) sqlde sadece bu satırları update etme işlemini yapar.

c# sql server get first row

            SqlConnection conn = new SqlConnection(BMS_DLL.SQL.sqlConnectionSource.ConnectionString);
            SqlCommand cmd = new SqlCommand("SELECT TOP 1 * FROM BM_PDKS_PARAMETRELER WHERE TUR='CALISMASAATI'", conn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            foreach (DataRow dr in dt.Rows) {
                SE_NS.EditValue = double.Parse( dr["NS"].ToString());
                SE_HS.EditValue = double.Parse(dr["HS"].ToString());

            }