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).
Category: C SHARP
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# DEVEXPRESS FLUENT FORM TITLE BAR OVERLAP PROBLEM

SOLUTION:

FINAL:

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());
}