Live Chat Software
Emre CIRIK | C# , VB.NET , Delphi 7 , ASP.NET, SQL Server , T-SQL, IOS , X Code, Visual Studio.NET , Windows Mobile, Windows CE, Windows Phone 7-8 ,C++, C

Ülkemde Yazılımcı Olmak !

by EMRCRK 25. April 2014 22:04

Merhaba arkadaşlar :) ölmedim hâla hayattayım demek için geldim . Tabii 1 yıl gibi bir ara vermişim blog yazmaya oda vakitsizlikten. İnanırmısınız panel şifremi hatırlamak için 4 kere tahminde bulundum sonunda giriş yapabildim. Sanırım ilk defa çok teknik bir makale yazmayacağım çokta uzun olabilir sonuçta 1 yıllık suskunluğumu bozuyorum J

Öncelikle Devexpress araçları konusunda 6 yıllık bir deneyim sahibiyim tabii ki WinForm ağırlıklı bu konuda genellikle raporlama ile alakalı mailler çok alıyorum ve güzel yorumlar alıyorum. Okurlara çok teşekkür ederim umarım faydalı oluyordur. Tabii arada maillere dönemediklerimde oluyor kusura bakmasınlar o arkadaşlarım :) İadere edin artık işler çok yoğun.

Gelelim asıl mevzumuza arkadaşlar son zamanlarda çok gereksiz saçma sapan olaylar oldu ülkemizde yok sosyal medya yasakları falan. Yazılımcı olarak ve interneti hayat damarı gibi kullanan biri olarak şunu söylemem gerek ki bu dünyanın en saçma olayı . Çünkü internet özgür bir dünyadır ve emin olmalısınız ki internetin adaleti gerçek dünyada ki adaletten daha adildir ! Hiçbir şekilde cezasız kalmaz. O yüzden saçma sapan yasaklarla uğraşmak yerine , inşaata yatırım yapmak yerine bence bu ülkede eğitime yatırım yapılmalı !

Neden ? Görüyoruz ki yazılımcılar bu ülkede hint kumaşı gibi olmaya başladı aynı zamanda dünyada. Yazılımcı çok olabilir ama sonuç odaklı ve iş bitirici tecrubeye doymayan çılgın iş kolik kardeşlerime ciddi bir şekilde ihtiyaç var.

İşin açıkçası doktorluk kadar önemli en az ! Giderek saçma sapan bir hâl alan eğitim sistemimizin ezberci zihniyete daha çok yakınlaştığını söylemeden de edemeyeceğim. Fakat bunun gibi olumsuzlukların yanında ve artan talepler doğrultusunda ülkemde harika etkinlikler oluyor yazılım adına ! J Tabii bu beni çok sevindiriyor OpenSource geliştirici arkadaşlar ve bazı yazılım firmaları bu konuda gerçekten güzel etkinlikler yapıyor. Onu geçtim CoderJodo gibi yazılım eğitimini daha küçük yaşlara indirgeyerek zehir gibi yazılımcıların yetişmesini sağlayacak topluluklar ortaya çıktı.

Yazılımcı açığını kapatmak adına üstad yazılımcılara önerim gerçekten bu şekilde ki organizasyonlara destek olmalıyız. =) Bunun ülke açısından bir çok faydası var , örnek olarak IK Firmaları şuan hunharca yazılımcı aramaktadır ! Tabii bu bir reklam değil şahsen gerçek bu konuda yazılımcının dilinden en iyi anlayan IK ekibi (e-nerjik) . Kendileri proje desteği ve adında ki gibi ciddi anlamda enerji kaynağı bir ekipten oluşmaktadır. Eğer yazılımcı arayan firmalar varsa bir görüşsünler derim. Diğer yandan ülkede yazılımcıya ihtiyaç duyan diğer sektörlerde bir ürün ortaya koymak adına ciddi bir yazılımcı açığımız var. Ülke olarak bu konuya desteğimiz açıkçası eksik. Start-Up firmalarının çok iyi desteklendiğini düşünmüyorum . Kosgeb var ama yazılımdan teknikten anlamayan insanlar yaptığınız işi sorguladığında sonuç elde edemiyorsunuz malsef. Server’ın ne olduğunu bilmeyip telefon zanneden adamlar bile var J . Neyse ülkemizin gelişimi açısından yazılımcı ihtiyaçları vardır. Bu tartışılmaz.

Fakat değinmek istediğim konulara gireyim en iyisi . Ülkemde yazılımcı olmak gerçekten zor ! Bildiğin hardcore bir iş oluyor. Çünkü yazılımcı yada bilgisayar mühendisi dediğinizde insanların kafasında her işi yapar gibi bir algı oluşuyor. Özellike ERP projeleri üzerinde ağırlıklı çalışıyorsanız emin olun fantezinin nirvanasına ulaşıyorsunuz J

Mobil raporlamalar, excel den kaynakların yetmediği çılgınca raporlar, sınırsız hayal gücü , el terminalinden dinamik üretim reçetesi oluşturarak üretim yapmak falan J Daha sayarım da  meslek adaylarını korkutmayayım . Ama korkacak bir şey yok . Sonuçta bu işi bilenler değil , aşık olanlar yapabilir ! Kod yazmak bir sanattır. Yazın bu dediklerimi :D Neden sanat , neresi sanat ? Sorularını duyar gibiyim J Bunun cevabı şu , kodlama standartlarının dışında her yazılımcı sorunlara farklı bir bakış açısı ile çözüm üretebilir. For döngüsünü  iç içe çalışan metodlada yapabilirsiniz yada var olanı kullanabilirsiniz mesela burada ki teknik ve kodlama biçimi farklı imzalar gibidir. Herkes sonuca odaklanır fakat herkesin yazdığı kod, okunabilirlik gerçekten benim için sanattır. Tıpkı resim çizmek, müzik bestelemek gibi bir şey.

Ülkemde yazılımcı olmanın zorluklarına gelelim;

 ”ne istendiği tam olarak analiz edilmemiş , sonrasında sizi şoke eden projeler” olabilir. Nasıl? Satıcı arkadaşlar (yazılımdan anlamayan tipler) gidip müşteriye bir yazılım satar sanırsın ki adam tüm elemanları çıkaracak sadece yazılım tüm şirketin işlerini yönetecek :D Tabii size aktarılan bu değildir , 2 günde yaparsın yahu . Tabii bizde gazla çalışan bir toplumuz hayır demek yapamam demek olmaz ( Tamamen Duygusaldır ! J )

“Sizi farklı konularda kullana bilirler “ , örnek olarak yahu benim bilgisayar yavaşladı , ses çıkmıyor, bu yazıcı neden çalışmıyor , ekran bir dalgalı falan J 2 dk da format atarsın sana bir çay ısmarlarım dediklerin de tav olurum ben :D Çay’a dayanamam . Mesela böyle talepler gelir hatırı sayılır kişilere artık projenin uzunluğuna bağlı firmanın elemanı gibi olduysanız sıkıntı olmaz :D

“En son sen oturdun bilgisayara daha önceden yoktu böyle bir sorun!” bir de böyle bir cümle ile çok karşılaşırsınız arkadaşlar J Atıyorum bir yere proje yazdınız kurdunuz. Sonra virüs falan girdi bir şey oldu. Top sizde ben söyliyim bence  iş yapmadan önce makineyi taratın sonra oturun kurulum falan yapın. Yada teknik ekibiniz varsa siz kurmayın onlara öğretin onlar çözsün i��i J

“Doküman” özel proje yazıyorsanız bunun bir dökümanını muhakkak isteyen olur . Yaparsanız yararınıza , yapmazsanız F1 e basarlar telefonunuz çalar ! Aman diyim !

“Siz yazılımcısınız hepiniz aynısınız!” evet bir de maalesef böyle bir cümle var. Şöyle ki her sektörde olduğu gibi bizim sektörde de güvenilir olmayan kötü meslektaşlarımız var. Bir çok firmanın canı bu yönde yandıysa sizi ön yargı ile karşılayabilir. Daha sonradan sevince bırakamazlar J

“Siz nasıl insansınız?” evet bir de böyle bir şey var J Yanlış anlaşılma  diyelim biz buna. Genellikle yazılımcıları çok monoton hayatı olan, bilgisayar sapığı sanan , sabahtan akşama kadar o aletin ekranına bakan, pislik , ne bulsa yiyen , koca popolu şişmanlar olarak düşünen çevrede olacaktır. Yanlış eğer işinizi iyi yapıyorsanız , iş vaktinizde geyik yapmadan düzenli çalışıyorsanız 03:00 da ortaköye çay içmeye gidecek vaktiniz bile oluyor J

“Hiç romantik değilsin ! Odun !”  katılıp katılmamak arasında değişiyor fikrim. :/ Yazılımcı olarak şunu söylemeliyim eğer bizim kadar romantik insanlar bulursanız ben bu işi bırakırım ! Çünkü sevdiklerimize her daim hayal edemeyeceği alternatif çözümler sunabiliriz. Yada birine  evlenme teklifi ederken, sevdiğini söylerken zor söyleyip yada söyleyemeyip kriptolanmış şeyleri çözmelerini bekleriz. Tabii bundan anlamayanlar daha bir romantik oluyor dimi ? :D Neyse ..

“Para  ? Maaş? ” arkadaşım şunu söylemeliyim bu ülkede iyi yazılımcılar hakettiğini alır ! Tabii dünya standartlarına göre değil , bu ülkeye göre !!! Maalesef Türkiyem de yazılımın değerini anlayan firma/kişi sayısı çok az L  Sizi sıradan bir bilgisayarcı gibi görebilirler. (Bizim çocuk da format atıyor)

Özete gelelim ülkemde yazılımcıya ihtiyaç var arkadaşlar. Hem de bu eğitimin temel düzeyinden başlamalı.Örnek olarak yazılımı çocuklara oyuncaklar ile başlata bilirsiniz. OLLO Robotik setleri , Lego ‘nun programlama setleri vs. bunların eğitimde faydası emin olun ki çok olacaktır.

İkincisi ezberci bir teori dersleri dışında , yazılım eğitimini sahada vermelisiniz. Örnek olarak bir üniversite öğrencisine proje veriyorsanız yaptığı uygulamayı bir firmaya pazarlasın hatta kullandırsın. Emin olun faydası onun için çok olacaktır. Bir sonra ki iş başvurusunda referans olacaktır.

Son olarak iyi yazılımcıları gerçekten iyi maaşlar ile ödüllendirin ki , elinizden kaçmasınlar…

 

Saygılar…

 


Tags: , , ,

Devex XtraPivot Grid İle Pivot Rapor Örneği

by EMRCRK 1. September 2013 19:04

:) Merhabalar, bu sefer yazımı şirketimizin blog u üzerinden yayınlıyorum , oradan incelersiniz

Kısacası Devex üzerinde Pivot Grid Raporlama ile ilgili bir örnek.

http://www.new.com.tr/devex-pivot-grid-control/

Windows Mobile & CE Get Device IP Address

by EMRCRK 10. January 2013 11:05

Merhabalar çok mühim bir kod değil ama belki lazım olur diye bir paylaşımda bulunmak istedim.

Windows Mobile veya CE cihazlar üzerinden IP adresi alan 1 satırlık bir kod..

 

 

Imports System.Net
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox1.Text = Dns.GetHostEntry(Dns.GetHostName()).AddressList(0).ToString()
    End Sub
End Class

Tags: ,

VB.NET | Windows Mobile | Windows CE

Happy New Year (2013)

by EMRCRK 31. December 2012 10:06

Merhaba arkadaşlar bir yılın daha devrini kapatıp , yenisini açıyoruz :) Hepmize hayırlı uğurlu olsun.

Herkese 2013 yılının sağlıklı , mutlu ve huzurlu olmasını dilerim. Başarılı bir sene geçirmenizi temenni ederim :) :)

 

New Ailesi olarak herkesin yeni yılını kutlarız..

Tags:

Devex XtraGrid Master Detail Views Samples

by EMRCRK 26. December 2012 21:32

Tekrar Merhabalar , devex XtraGrid ile master detail bir görüntüyü nasıl elde edersiniz size bunu anlatacağım. Şimdi ilk olarak basit bir veritabanı hazırlayalım. 

1.Olarak PERSONS isimli bir tablomuz olsun

Alanları ID,NAME,SURNAME,AGE olsun

2.Olarak NIDNUMBERS isimli bir tablo olsun 

Alanları ID,NIDNUMBER olsun.

Bu iki tablo arasında ki ilişkilerimiz ID-ID olacaktır.

 

 

void LoadTable() //Tabloları dolduran ve ilişkilendiren metodumuz.
        {
            dtPersons.Clear(); //Kişilrin olduğu table'ı temizliyoruz.
            cmd = new OleDbCommand("SELECT * FROM PERSONS", conn); //Bilgileri dolduruyoruz.
            da.SelectCommand = cmd;
            da.Fill(dtPersons);

            cmd = new OleDbCommand("SELECT * FROM NIDNUMBERS", conn);
            da.SelectCommand = cmd;
            da.Fill(dtNationalIDNumbers);

            DataSet dsRel = new DataSet();//DataSet içerisine bu 2 tabloyu ekliyoruz
            dsRel.Tables.Add(dtPersons);
            dsRel.Tables.Add(dtNationalIDNumbers);

            dsRel.Relations.Add("PersDetail", dtPersons.Columns["ID"], dtNationalIDNumbers.Columns["ID"]);//Tablolar arasında ilişkimizi oluşturuyoruz.

            gridControl1.LevelTree.Nodes.Add(dsRel.Relations["PersDetail"].RelationName, gridView2);//GridControl'e bu ilişkileri belirtip detail view 'ı chlid olarak atıyoruz.
            
            gridControl1.DataSource = dsRel.Tables["PERSONS"];//Persons tablosunu master olarak belirliyoruz.
            gridControl1.Refresh();
            gridControl1.RefreshDataSource();
        }

 

İkinci olarak genellikle kullanıcılar Detail View üzerinde var olan bir alana ait bilgileri alamamaktadır. Bunla ilgili olarakda şu işlem yapılmalıdır :

GridView 2 olarak tanımlanan Detail View 'ın Click Eventi içerisinde 

private void gridView2_Click(object sender, EventArgs e)
        {

            DevExpress.XtraGrid.Views.Grid.GridView a = (DevExpress.XtraGrid.Views.Grid.GridView)sender; // Bir GridView nesnesi oluşturup bunu sender ile hangi view'dan geldiğini alıyoruz.
            if (a.FocusedRowHandle > -1) //Seçilen grid'e ait bir satır varsa bunu focusedRpwNIdNumber olarak tanımlanan değişkene istediğimiz değerleri alıyoruz.
            {
                //MessageBox.Show(a.FocusedRowHandle.ToString());
                focusedRowNIdNumber = a.GetFocusedRowCellValue("NIDNUMBER").ToString();
            }
        }

 

 

private void button1_Click(object sender, EventArgs e)//Daha sonra buton Click eventi içerisinde değerimizi gösteriyoruz.
        {
            MessageBox.Show(focusedRowNIdNumber);
        }

 

 

Üçüncü olarak Grid View üzerinden kayıt ekleme işlemlerinden bahsediyim 

 

private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e) // GridÜzerine yeni bir satır eklenecek ise kullanılan metot
        {           
            addRow = true;
            try
            {           
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@NAME", "").OleDbType = OleDbType.VarChar;
                cmd.Parameters.AddWithValue("@SURNAME", "").OleDbType = OleDbType.VarChar;
                cmd.Parameters.AddWithValue("@AGE", 0).OleDbType = OleDbType.Numeric;
                cmd.CommandText = "INSERT INTO PERSONS (NAME,SURNAME,AGE) " +
                    "VALUES(@NAME,@SURNAME,@AGE)";
                conn.Open();
                cmd.Connection = conn;
                cmd.ExecuteNonQuery();
                conn.Close();
                LoadTable();
            }
            catch (Exception ex)
            {

            }
            addRow = false;
        }

 

Tabi bu örnekte bu işlem çalışır satırı eklersiniz fakat detail tabloya ilişkili bir kayıt gelmediği için programdan bir hata uyarısı alırsınız :) Ama kayıt etmektedir merak etmeyin.

Satır üzerinde kayıt güncellendiğinde bunu veritabanına yansıtmak için 

 

private void gridView1_RowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e) // Satır güncellendikten sonra çalışacak eventdir
        {
            //Eğer yeni kayıt eklenmeyecekse ve bir satır seçildiyse aşağıdaki işlemler gerçekleşecektir.
            if (gridView1.FocusedRowHandle>-1 && !addRow)
            {
                try
                {
                    int rowId = int.Parse(gridView1.GetFocusedRowCellValue("ID").ToString());
                    string name = gridView1.GetFocusedRowCellValue("NAME").ToString();
                    string surname = gridView1.GetFocusedRowCellValue("SURNAME").ToString();
                    int age = int.Parse(gridView1.GetFocusedRowCellValue("AGE").ToString());

                    cmd.Parameters.Clear();                    
                    cmd.Parameters.AddWithValue("NAME",name).OleDbType=OleDbType.VarChar;
                    cmd.Parameters.AddWithValue("SURNAME", surname).OleDbType = OleDbType.VarChar;
                    cmd.Parameters.AddWithValue("AGE", age);
                    cmd.CommandText = "UPDATE PERSONS SET NAME=@NAME,SURNAME=@SURNAME,AGE=@AGE WHERE ID="+rowId.ToString() ;
                    conn.Open();
                    cmd.Connection = conn;
                    cmd.ExecuteNonQuery();
                    conn.Close();
                    LoadTable();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message); 
                }
            }
        }

 

Aşağıdan örnek uygulamayı indire bilirsiniz. İyi çalışmalar :)

DevexGridSample.rar (62,32 kb)

Devex XtraReport Sample

by EMRCRK 26. December 2012 21:16

Merhaba arkadaşlar çok uzun bir zamandır iş yoğunluğumdan dolayı blog ile ilgilenemiyorum. Bugün biraz ufak tefek paylaşımlarda bulunacağım.

Devex XtraReport üzerine parametreler aracılığı ile rapor hazırma adına basit bir örnek yaptım. 

İlk olarak projemizi oluşturmamız gerekmektedir. Ben basit bir ekran yaptım ,

Ekran bu şekilde şimdi projemize bu parametreleri göndere bileceğimiz bir XtraReport Eklememiz gerekmektedir , bunu ekledikten sonra karşımıza çıkacak report wizard üzerinde Standar Report yada Label seçeneği gelecektir . Ben Standart report ile yaptım isterseniz Label 'ı seçebilirsiniz

 

Dizaynlarımızı yaptıktan sonra basit olarak hemen kodlamamızı yapmaya geçiyorum ama şunu unutmayın Report Designer üzerinde parametre alacak objenin Modifiers özelliğini dışardan erişile bilir yapmanız gerekmektedir.

 

 

Örneği buradan indire bilirsiniz :)

VS2012 :DevexXtraReportSample.rar (73,07 kb)

VS2010: DevexXtraReportSample VS2010.rar (52,07 kb) ( Proje dosyası VS2008 içerisinde açılabilir)

Tags: , ,

CSharp | DevExpress

Devex XtraGrid Add Column Group - Çalışma Zamanında Gruplanacak Sütünü Ekleme

by EMRCRK 22. May 2012 21:24

Merhaba arkadaşlar,şuan otobüsten yazıyorum o yüzden çok detaylandırmadan anlatacağım.

Devex Grid üzerinde bulunan herhangi bir sutunu runtime da nasıl gruplarım sorusunun cevabını veriyorum.

Bugün bir müşterimizde bununla ilgili uğraşıyorduk ki artık yorgunluktan bu kadar basit birşeyi çok fazla düşünmüşüz ki geç oldu. 

'Zülfikar Bey biraz dinlenmek lazım mış :)'

 


Kodu Buraya yazıyorum , belki işinize yarar.

VB.NET

 

Insert code here...Public Class Form1
    Dim dtPerson As New DataTable
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        dtPerson.Columns.Add("Name")
        dtPerson.Columns.Add("Surname")
        dtPerson.Columns.Add("Age")

        Dim dRow As DataRow = dtPerson.NewRow()
        dRow("Name") = "Emre"
        dRow("Surname") = "CIRIK"
        dRow("Age") = "21"
        dtPerson.Rows.Add(dRow)
        dRow = dtPerson.NewRow()
        dRow("Name") = "Halid"
        dRow("Surname") = "Pekel"
        dRow("Age") = "19"
        dtPerson.Rows.Add(dRow)

        GridControl1.DataSource = dtPerson

     
        gColName.Group()

    End Sub
End Class

 

 

DevexRuntimeAddGridColumnGroup.rar (67,49 kb)

Tags: , ,

DevExpress | VB.NET

How can I make my C# application check for updates? (Basit Uygulama Güncelleme Programı)

by EMRCRK 1. April 2012 20:30

Merhaba arkadaşlar , bugün yazdığım basit bir uygulama güncelleme programını sizlerle paylaşacağım. Belki ihtiyacınız olur .

Programın çalışma mantığından bahsediyim ;

 Program kendi içerisinde güncellenmesi istenen bir .exe uzantılı program dosyasını kontrol eder. Bu dosyanın versiyonu ile ,

kontrol amaçlı belirlenen güncelleme .exe sinin versiyonlarını karşılaştırır. Eğer güncelleme dizinindeki dosya ile aynı değilse , o dosyayı bilgisayarınızın C:\ dizinine download eder, sonra belirlenen bir resim ile ekrana güncelleme uyarısı verdirilip arka planda o program çalışıyorsa görevi sonlandırıp güncel program ile yerini değiştirir ve sonra güncel programı çalıştırır.

Bu programı gün itibari ile sayısı 30 dan fazla kiosk üzerine yükledik. Çalıştığına şüpeniz olmasın. Çok fazla derinlere inmeden uygulamamı kodları ile birlikte upload ettim. İndire bilirsiniz =)) 

 

Çok detaya giremiyorum bu aralar üzgünüm , New isimli şirkette çalışıyorum şirketimiz yeni kuruldu ve şuan onun için çok çalışmamız gerekiyor. Umarım işinize yarar. Görüşmek dileğiyle... 

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO ;
using System.Diagnostics;
using System.Xml;
using System.Net;
using System.Threading;
using System.IO;

namespace ProjectUpdate
{
    public partial class FrmMain : Form
    {
        StreamWriter processLog;
        FileVersionInfo versionInfo;
        FrmUpdateScreen updateScreeen;
        string settingFile = Application.StartupPath + "\\Settings.xml";
        DataTable dtSettings;

        delegate void VersionControl(string versionFile);
      
        WebClient webClient = new WebClient();


        public FrmMain()
        {
            InitializeComponent();
            dtSettings = new DataTable("Settings");
            dtSettings.Columns.Add("ProjectFile",typeof(string));
            dtSettings.Columns.Add("VersionFile", typeof(string));
            dtSettings.Columns.Add("WaitSecreen", typeof(string));
            dtSettings.Columns.Add("UpdateFrequency", typeof(int));
            try
            {
             
            if (File.Exists(settingFile))
            {
                dtSettings.ReadXml(settingFile);
                if (dtSettings.Rows.Count>0)
                {
                    txtProjectFile.Text = dtSettings.Rows[0]["ProjectFile"].ToString();
                    txtVersionFile.Text = dtSettings.Rows[0]["VersionFile"].ToString();
                    pcxUpdateScreen.Load(dtSettings.Rows[0]["WaitSecreen"].ToString());
                    pcxUpdateScreen.Tag = dtSettings.Rows[0]["WaitSecreen"].ToString();
                    nudUpdateFrequency.Value = int.Parse(dtSettings.Rows[0]["UpdateFrequency"].ToString());
                    tmrTrigger.Interval = int.Parse(dtSettings.Rows[0]["UpdateFrequency"].ToString())*1000;
                    

                    chkAutoUpdate.Checked = true;
                    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
                    
                    webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
                   
                }
            }
            else
            {
                MessageBox.Show("Program has not initial setting file.");
            }
            }
            catch (Exception ex)
            {
                processLog = new StreamWriter(Application.StartupPath + "\\Log.txt", true);
                processLog.WriteLine("*****Error****");
                processLog.WriteLine("Date:"+DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"));
                processLog.WriteLine("Message:"+ex.Message);
                processLog.Flush();
                processLog.Close();
            }
        }                                               
        private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            prgBarState.Value = e.ProgressPercentage;
        }

        private void Completed(object sender, AsyncCompletedEventArgs e)
        {
            try
            {                     
                 ChangeNewVersion();
                
            }
            catch (Exception ex)
            {

                updateScreeen.Close();
                updateScreeen.Dispose();
                Application.DoEvents();
                tmrTrigger.Start();

                processLog = new StreamWriter(Application.StartupPath + "\\Log.txt", true);
                processLog.WriteLine("*****Completed Error****");
                processLog.WriteLine("Date:" + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"));
                processLog.WriteLine("Message:" + ex.Message);
                processLog.Flush();
                processLog.Close();
            }
            //MessageBox.Show("Download completed!");
        }
        private void FrmMain_Load(object sender, EventArgs e)
        {
            tmrTrigger.Start();
        }

        private void tmrTrigger_Tick(object sender, EventArgs e)
        {
            try
            {
                this.Invoke(new VersionControl(ControlVersion), txtVersionFile.Text);
                tmrTrigger.Start();
            }
            catch (Exception ex)
            {
                tmrTrigger.Start(); 
            }
            //ControlVersion(txtVersionFile.Text);
            
        }

        void ControlVersion(string versionFile)
        {
            tmrTrigger.Stop();
            try
            {
                if (txtProjectFile.Text != "")
                {
                    versionInfo = FileVersionInfo.GetVersionInfo(txtProjectFile.Text);
                    DataTable dtVersionXML = new DataTable("VersionFile");
                    dtVersionXML.Columns.Add("Version", typeof(string));
                    dtVersionXML.Columns.Add("FileName", typeof(string));
                    dtVersionXML.ReadXml(versionFile);
                    if (dtVersionXML.Rows.Count > 0)
                    {
                        string newversion = dtVersionXML.Rows[dtVersionXML.Rows.Count - 1]["Version"].ToString();
                        string sourcefile = dtVersionXML.Rows[dtVersionXML.Rows.Count - 1]["FileName"].ToString();
                        if (versionInfo.ProductVersion == newversion)
                        {
                            //MessageBox.Show("Aynı Versiyon");
                        }
                        else
                        {
                            tmrTrigger.Stop();
                            processLog = new StreamWriter(Application.StartupPath + "\\Log.txt", true);
                            processLog.WriteLine("*****New Version Founded****");
                            processLog.WriteLine("Date:" + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"));
                            processLog.WriteLine("Version Nr:" + newversion);
                            processLog.Flush();
                            processLog.Close();
                            Application.DoEvents();
                            updateScreeen = new FrmUpdateScreen();
                            updateScreeen.ImageLoc = pcxUpdateScreen.Tag.ToString();
                            updateScreeen.Show();
                            webClient.DownloadFileAsync(new Uri(sourcefile), @"C:\" + versionInfo.ProductName + ".exe");
                            Application.DoEvents();

                        }
                    }
                }
            
            }
            catch (Exception ex)
            {
                processLog = new StreamWriter(Application.StartupPath + "\\Log.txt", true);
                processLog.WriteLine("*****Error****");
                processLog.WriteLine("Date:" + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"));
                processLog.WriteLine("Message:" + ex.Message);
                processLog.Flush();
                processLog.Close();
            }
            

        }
        void ChangeNewVersion()
        {
            try
            {
             
            Process[] prs = Process.GetProcesses();
            foreach (Process pr in prs)
            {
                if (pr.ProcessName == versionInfo.ProductName)
                    pr.Kill();
            }
            Application.DoEvents();
            Thread.Sleep(3000);
      

            if (File.Exists(txtProjectFile.Text))
            {
                File.Delete(txtProjectFile.Text);
            }                                               
            Application.DoEvents();
            //MessageBox.Show(versionInfo.ProductName);
            File.Copy(@"C:\" + versionInfo.ProductName + ".exe", txtProjectFile.Text);
            Application.DoEvents();
            Process.Start(txtProjectFile.Text);
            Application.DoEvents();
            updateScreeen.Close();
            updateScreeen.Dispose();
            Application.DoEvents();
            tmrTrigger.Start();
            }
            catch (Exception ex)
            {

                processLog = new StreamWriter(Application.StartupPath + "\\Log.txt", true);
                processLog.WriteLine("*****Change Error****");
                processLog.WriteLine("Date:" + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"));
                processLog.WriteLine("Message:" + ex.Message);
                processLog.Flush();
                processLog.Close();

                updateScreeen.Close();
                updateScreeen.Dispose();
                Application.DoEvents();
            }
        }

        private void btnSelectUpdateFile_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Executable files (*.exe)|*.exe|All files (*.*)|*.*";
            ofd.ShowDialog();
            txtProjectFile.Text = ofd.FileName;
        }

        private void btnSelectVersionFile_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "XML files (*.xml)|*.xml";
            ofd.ShowDialog();
            txtVersionFile.Text = ofd.FileName;
        }

        private void btnSaveSettings_Click(object sender, EventArgs e)
        {
            DataRow dRowSettings = dtSettings.NewRow();
            dRowSettings["ProjectFile"] = txtProjectFile.Text ;
            dRowSettings["VersionFile"] = txtVersionFile.Text ;
            dRowSettings["WaitSecreen"] = pcxUpdateScreen.Tag.ToString();
            dRowSettings["UpdateFrequency"] = nudUpdateFrequency.Value ;
            dtSettings.Rows.Clear();
            dtSettings.Rows.Add(dRowSettings);

            dtSettings.WriteXml(settingFile); 
            MessageBox.Show("Setting file saved!");
            
            tmrTrigger.Start();
        }

        private void btnSelectUpdateScreen_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "JPEG files (*.jpg)|*.jpg|All files (*.*)|*.*";
            ofd.ShowDialog();
            pcxUpdateScreen.Tag = ofd.FileName;
            pcxUpdateScreen.Load(ofd.FileName);
        }

        private void btnCreateVersionFile_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Executable files (*.exe)|*.exe|All files (*.*)|*.*";
            ofd.ShowDialog();
            txtSourceProject.Text = ofd.FileName;
            FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(txtSourceProject.Text);

            DataTable dtVersionFile = new DataTable("VersionFile");
            dtVersionFile.Columns.Add("Version", typeof(string));
            dtVersionFile.Columns.Add("FileName", typeof(string));
            if (File.Exists(Application.StartupPath+"\\Version.xml"))
            {
                File.Delete(Application.StartupPath+"\\Version.xml");
            }
            DataRow versRow = dtVersionFile.NewRow();
            versRow["Version"] = versionInfo.ProductVersion;
            versRow["FileName"] = ofd.FileName;
            dtVersionFile.Rows.Add(versRow);
         
            dtVersionFile.WriteXml(Path.GetDirectoryName(txtSourceProject.Text)+"\\Version.xml");
            MessageBox.Show("Version File Saved!");
        }

        private void chkAutoUpdate_CheckedChanged(object sender, EventArgs e)
        {
            if (chkAutoUpdate.Checked )
            {
                tmrTrigger.Start();
            }
            else
            {
                tmrTrigger.Stop();
            }
        }

        private void btnUpdateManuel_Click(object sender, EventArgs e)
        {
            try
            {
               this.Invoke(new VersionControl(ControlVersion), txtVersionFile.Text);

               if (chkAutoUpdate.Checked)
               {
                   tmrTrigger.Start();
               }
               else
               {
                   tmrTrigger.Stop();
               }
            }
            catch (Exception ex)
            {
                processLog = new StreamWriter(Application.StartupPath + "\\Log.txt", true);
                processLog.WriteLine("*****Error****");
                processLog.WriteLine("Date:" + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"));
                processLog.WriteLine("Message:" + ex.Message);
                processLog.Flush();
                processLog.Close();
            }
        }
    }
}

 

ProjectUpdate.rar (255,99 kb)

Sql Server CE : Uygulama Örneği

by EMRCRK 18. March 2012 15:36

Merhaba arkadaşlar çok fazla açıklama yapamayacağım, bir süreliğine server geçişinden dolayı site yayında değildi. SQL Server CE ile ilgili basit bir örnek yazdım. SQL Server CE Veritabanı oluşturma, kayıt ekeleme ve görme gibi işlemler mevcuttur. Örnek Smart Device Application olarak yapılmıştır.

 

 

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;
namespace SqlCeExample
{
    public partial class Form1 : Form
    {
        SqlCeEngine sqlEngine = new SqlCeEngine();

        SqlCeConnection sqlCeConn = new SqlCeConnection();
        SqlCeCommand sqlCeCmd = new SqlCeCommand();
        public Form1()
        {
            InitializeComponent();
        }

        private void btnCreateDatabase_Click(object sender, EventArgs e)
        {
            try
            {
                sqlEngine.LocalConnectionString = "Data Source=\\ExampleDb.sdf";
                sqlEngine.CreateDatabase();
                MessageBox.Show("Veri Tabanı Oluştu.");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message );
            }
        }

        private void btnCreateTable_Click(object sender, EventArgs e)
        {

            sqlCeConn.ConnectionString = "Data Source=\\ExampleDb.sdf";
            if (sqlCeConn.State==ConnectionState.Closed)
            {
                sqlCeConn.Open();
            }
            int executeResult = 0;//Sorgu başarılımı değilmi
            sqlCeCmd.Connection = sqlCeConn;
            sqlCeCmd.CommandText = "CREATE TABLE tblIsimler(ID int IDENTITY(1,1),Isim nvarchar(25),Soyad nvarchar(25))";
            executeResult=sqlCeCmd.ExecuteNonQuery();
            MessageBox.Show(executeResult.ToString());
            sqlCeConn.Close();
        }

        private void btnAddNewRow_Click(object sender, EventArgs e)
        {
            sqlCeConn.ConnectionString = "Data Source=\\ExampleDb.sdf";
            if (sqlCeConn.State==ConnectionState.Closed)
            {
                sqlCeConn.Open();
            }
            sqlCeCmd.Connection = sqlCeConn;
            sqlCeCmd.CommandText = "INSERT INTO tblIsimler(Isim,Soyad) Values('Eren','Topdemir')";
            int executeResult = 0;//Sorgu başarılımı değilmi
            sqlCeCmd.ExecuteNonQuery();
            MessageBox.Show(executeResult.ToString());
            sqlCeConn.Close();
        }
        
        private void btnShowRecord_Click(object sender, EventArgs e)
        {
            SqlCeDataReader sqlCeReader;
            sqlCeConn.ConnectionString = "Data Source=\\ExampleDb.sdf";
            if (sqlCeConn.State == ConnectionState.Closed)
            {
                sqlCeConn.Open();
            }
            sqlCeCmd.Connection = sqlCeConn;
            sqlCeCmd.CommandText = "Select * From tblIsimler";
            sqlCeReader = sqlCeCmd.ExecuteReader();
            while (sqlCeReader.Read())
            {
                MessageBox.Show(sqlCeReader["Isim"].ToString());
            }
            sqlCeReader.Close();
            sqlCeConn.Close();
        }
    }
}
 

 

SqlCeExample.rar (112,43 kb)

Devex XtraReport Kullanımı

by EMRCRK 14. August 2011 04:59

(Dip Not : Kusura bakmayın resimler devasa boyutta olduğu için dipnotu buraya düştüm, resimleri büyül olarak upload etmem olayı daha net görmeniz içindir. Sorularınız olursa yardımcı olmaya çalışırım.)

 

Merhaba arkadaşlar, uzun zamandır bir başlık bile atamıyorum.Malumunuz işler yoğun ve vakit kısıtlı. Boş bir vaktimde ihtiyaç duyduğum ve sizlerinde ihtiyaç duyabilceğiniz bir konuya değinmek istiyorum "Raporlama" . Bilindiği gibi arkadaşlar raporlama konusu müşterilerden en çok istenilen şeydir ve bir çok componentle yada dahili visual studio komponentleri ile birşeyler yapmaya çalışırız fakat bazen yetersiz kalabiliyor. Ben component ihtiyacımı Devex üzerinden sağlıyorum çünkü çok başarılı ve kaliteli ve en önemlisi ihtiyaç duyabilceğim şeyleri üzerinde barındırıyor olmasıdır. Lafı çok uzatmadan Devex'in XtraReport undan bahsedelim :

Bu rapor komponenti Fatura,İrsaliye vb. gibi belgeler için ,

Teklif vb. belgeler için,

İş Emirleri vb. belgeler için,

Müşterilerin istediği özel formatlarda belge çıktıları için v.b birçok durumda kullanılan rapordur.

Ben burada bir fatura raporlama örneği vericem ve  bu hazır raporu müşterinin kendisine göre nasıl editleye bileceğini göstericem.

 

İlk önce raporun 3 noktasından bahsetmem gerek :

1.Report Header = Rapor Başlık bilgileri . Örnek : Faturadaki sabit bilgiler : Cari Adı,Adresi,Vergi Dairesi,Vergi Nosu , Tarihi,Sevk Tarihi,Tarihi.

Faturanın detayları için oluşturula bilecek başlık bilgileri :

Stok Adı  Stok Kodu Birim Miktar Birim Fiyat Tutar  gibi..

2.Detail = Faturanın detay kısmı , burası aşağı doğru akan kayıtlar için kullanılan kısımdır, mesela bir faturada 1 den fazla ürün çeşidi alına bilir ve her çeşit için tek satır belirtmeniz lazım. Burası bunun için kullanılacaktır.

3.PageFooter = Raporun Sonu . Bizde burası faturanın genel toplamı,aratoplamı,iskonto toplamı,kdv toplamı, cari son bakiyesi, genel tutarın yazı ile yazılışını parametrik olarak göndericeğiz. 

 

İlk olarak bir proje oluşturun . 

Sonra projeye sağ tıklayıp Add->New Item diyelim ve bir DataSet nesnesi ekleyelim.

Sonra oluşan dataset nesnesini SolutionExplorer üzerinden açın ve sağtıklayıp 2 tane tablo ekleyelim 

1.si FaturaBaşlık(Cari bilgileri vs.) bilgileri 2.si FaturaDetay(Ürünlerin Olduğu) bilgileri olsun

Sonra Faturanın başlıklarını tutacak tabloya gerekli sütunları ekleyelim :

CariKodu,CariAdı,CariAdres,VergiDairesi,VergiNumarası,Tarih,SevkTarihi,Saat

CariSonBakiyesi,FaturaAraToplamı,FaturaIskontoToplamı,FaturaKDVToplamı,FaturaGenelToplamı,FaturaGenelToplamıYazısı

Detay Tablosu için :

Stok Kodu,Stok Adı, Birim, Birim Fiyat, Miktar ,İskonto Oran,KDV ,İskonto Tutar,Kdv Tutar , Tutar ,Net Tutar

Şimdi gelelim Fatura Dizaynına , bunun için yine projeye sağ tıklayın Add - >New Item -> XtraReport ekleyelim.

Sonra Rapor Dizayn Sayfasında bize bir hazır şablon oluşturma sihirbazı çıkacaktır bunu direk Cancel diyerek kapayalım.

Daha sonra ToolBox üzerinde bulunan Data üzerinden bir DataSet nesnesine çift tıklayarak Rapora ekleyelim.

Sonra karşımıza böyle bir diyalog çıkacak ve bizim oluşturduğumuz DataSet üzerinden miras alma seçeneği çıkacaktır. Az önce bizim oluşturduğumuz DataSet aslında kendimiz için hazır kullanıla bilecek bir classtır. Bizde rapora eklediğimiz dataset i bunun özelliklerini devralması için ekliyoruz ve direk OK butonuna basalım.

Sonra DataSet e bir isim verelim , erişim belirtecinide Properties Penceresinden -> Modifiers Özelliğini -> PUBLİC  olarak değiştirelim

Bunuda yaptıktan sonra Field List penceresinden gerekli bilgileri istediğimiz yerlere sürükle bırak yapalım.

Dizaynımızı Oluşturalım.

 

Resim kocaman ama daha iyi görünmesi ve anlaşılması için küçültmek istemedim. Arkadaşlar dikkat ederseniz Cari Adresini DataSet üzerinde göremiyoruz ve buraya onu eklememiz gerek , bunun için Ana Dataset nesnemizi açıp oraya birde Cari Adres alanı eklememiz gerekmektedir. Daha sonra Field List üzerinde bu alanın güncellenmiş olduğunu görüceksiniz.

Evet gördüğünüz gibi bu alanda geldiğine göre dizaynda ilgili noktaya yerleştirmemiz gerekir ve şimdi gelelim işin kodlama tarafına ve en zevkli kısmına =) 

Formumuza 3 buton ekleyelim 

1.si Fatura Dizaynını kullanıcıya açsın 

2.si Baskı Önizlemesi Yapsın

3.sü Bizim kaydettiğimiz bir dizayn dosyasını yükleyerek kullanıcının bunu düzenleme şansını sağlasın.

 

Kodlarımı aşağıda yayınlıyorum:

 

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DevexXtraReportExample
{
    public partial class Form1 : Form
    {
        XRprInvoice myInvoice = new XRprInvoice();
        public Form1()
        {
            InitializeComponent();
        }

        private void btnInvoiceDesign_Click(object sender, EventArgs e)
        {           
            myInvoice.ShowDesigner();
        }

        private void btnShowInvoice_Click(object sender, EventArgs e)
        {
            DataRow dRowHeader = myInvoice.dsRprInvoice.dtInvoiceHeader.NewdtInvoiceHeaderRow();//Fatura Başlık İçin Bir Satır Oluşturduk
            dRowHeader["CustCode"] = "CRY. YAZILIM EMRCRK";//Müşteri Kodu
            dRowHeader["CustName"] = "EMR CRK CORP.";//Müşteri Adı
            dRowHeader["CustAdress"] = "BEYLİKDÜZÜ";//Müşteri Adres
            dRowHeader["CustRemBalance"] = Math.Round((-1)*(529.056),2).ToString("#0.00");//Müşteri Kalan Bakiyesi
            dRowHeader["TaxOffice"] = "BEYLİKDÜZÜ";//Vergi Dairesi
            dRowHeader["TaxNum"] = "1122334455";//Vergi Numarası
            dRowHeader["Date_"] = DateTime.Now.ToShortDateString();//Fatura Tarihi
            dRowHeader["RecvDate_"] = DateTime.Now.ToShortDateString();//Sevk Tarihi
            dRowHeader["Time_"] = DateTime.Now.ToShortTimeString();//Saat
            dRowHeader["Total"] = Math.Round((200.00), 2).ToString("#0.00");//Fatura Tutar
            dRowHeader["TotalDiscount"] = Math.Round((00.00), 2).ToString("#0.00");//Fatura İskonto Toplamı
            dRowHeader["TotalVat"] = Math.Round((36.00), 2).ToString("#0.00");//Fatura Kdv Toplamı
            dRowHeader["NetTotal"] = Math.Round((236.00), 2).ToString("#0.00");//Fatura Genel Toplam
            dRowHeader["NetTotalStr"] = "İKİ YÜZ OTUZ ALTI /TL.  /KRŞ. ";//Genel Toplam Yazısı
            myInvoice.dsRprInvoice.dtInvoiceHeader.Rows.Add(dRowHeader);//Fatura Başlık Bilgisine
            //yeni bir satır ekledik

            DataRow dRowDetail = myInvoice.dsRprInvoice.dtInvoiceDetail.NewdtInvoiceDetailRow();//Fatura Detayı İçin Bir Satır Oluşturduk
            dRowDetail["StockCode"] = "HDD.SGT EXT 1TB";//Stok Kodu
            dRowDetail["StockName"] = "SEGATE GO FLEX 1 TB EXT. HDD";//Stok Adı
            dRowDetail["StockUnit"] = "ADET";//Stok Birim
            dRowDetail["Price"] = Math.Round((200.00), 2).ToString("#0.00");//Birim Fiyat
            dRowDetail["Amount"] = 1;//Miktar
            dRowDetail["DiscPer"] = 0;//İskonto Oranı
            dRowDetail["Vat"] = 18;//KDV Oranı
            dRowDetail["DiscCost"] = Math.Round((00.00), 2).ToString("#0.00");//İskonto Tutarı
            dRowDetail["VatMnt"] = Math.Round((36.00), 2).ToString("#0.00");//KDV Tutarı
            dRowDetail["Total"] = Math.Round((200.00), 2).ToString("#0.00");//Tutar
            dRowDetail["NetTotal"] = Math.Round((236.00), 2).ToString("#0.00");//Net Tutar

            myInvoice.dsRprInvoice.dtInvoiceDetail.Rows.Add(dRowDetail);

            myInvoice.ShowPreview();
        }

        private void btnLoadLayout_Click(object sender, EventArgs e)
        {
            myInvoice.LoadLayout(@"D:\NewXRprInvoice.repx");
            DataRow dRowHeader = myInvoice.dsRprInvoice.dtInvoiceHeader.NewdtInvoiceHeaderRow();//Fatura Başlık İçin Bir Satır Oluşturduk
            dRowHeader["CustCode"] = "CRY. YAZILIM EMRCRK";//Müşteri Kodu
            dRowHeader["CustName"] = "EMR CRK CORP.";//Müşteri Adı
            dRowHeader["CustAdress"] = "BEYLİKDÜZÜ";//Müşteri Adres
            dRowHeader["CustRemBalance"] = Math.Round((-1) * (529.056), 2).ToString("#0.00");//Müşteri Kalan Bakiyesi
            dRowHeader["TaxOffice"] = "BEYLİKDÜZÜ";//Vergi Dairesi
            dRowHeader["TaxNum"] = "1122334455";//Vergi Numarası
            dRowHeader["Date_"] = DateTime.Now.ToShortDateString();//Fatura Tarihi
            dRowHeader["RecvDate_"] = DateTime.Now.ToShortDateString();//Sevk Tarihi
            dRowHeader["Time_"] = DateTime.Now.ToShortTimeString();//Saat
            dRowHeader["Total"] = Math.Round((400.00), 2).ToString("#0.00");//Fatura Tutar
            dRowHeader["TotalDiscount"] = Math.Round((00.00), 2).ToString("#0.00");//Fatura İskonto Toplamı
            dRowHeader["TotalVat"] = Math.Round((72.00), 2).ToString("#0.00");//Fatura Kdv Toplamı
            dRowHeader["NetTotal"] = Math.Round((472.00), 2).ToString("#0.00");//Fatura Genel Toplam
            dRowHeader["NetTotalStr"] = "DÖRT YÜZ YETMİŞ İKİ /TL.  /KRŞ. ";//Genel Toplam Yazısı
            myInvoice.dsRprInvoice.dtInvoiceHeader.Rows.Add(dRowHeader);//Fatura Başlık Bilgisine
            //yeni bir satır ekledik

            DataRow dRowDetail = myInvoice.dsRprInvoice.dtInvoiceDetail.NewdtInvoiceDetailRow();//Fatura Detayı İçin Bir Satır Oluşturduk
            dRowDetail["StockCode"] = "HDD.SGT EXT 1TB";//Stok Kodu
            dRowDetail["StockName"] = "SEGATE GO FLEX 1 TB EXT. HDD";//Stok Adı
            dRowDetail["StockUnit"] = "ADET";//Stok Birim
            dRowDetail["Price"] = Math.Round((200.00), 2).ToString("#0.00");//Birim Fiyat
            dRowDetail["Amount"] = 1;//Miktar
            dRowDetail["DiscPer"] = 0;//İskonto Oranı
            dRowDetail["Vat"] = 18;//KDV Oranı
            dRowDetail["DiscCost"] = Math.Round((00.00), 2).ToString("#0.00");//İskonto Tutarı
            dRowDetail["VatMnt"] = Math.Round((36.00), 2).ToString("#0.00");//KDV Tutarı
            dRowDetail["Total"] = Math.Round((200.00), 2).ToString("#0.00");//Tutar
            dRowDetail["NetTotal"] = Math.Round((236.00), 2).ToString("#0.00");//Net Tutar

            myInvoice.dsRprInvoice.dtInvoiceDetail.Rows.Add(dRowDetail);
            dRowDetail = myInvoice.dsRprInvoice.dtInvoiceDetail.NewdtInvoiceDetailRow();//Fatura Detayı İçin Bir Satır Oluşturduk
            dRowDetail["StockCode"] = "RAM.KNG 1GB DDR2";//Stok Kodu
            dRowDetail["StockName"] = "1 GB KINGSTON DDR3 RAM";//Stok Adı
            dRowDetail["StockUnit"] = "ADET";//Stok Birim
            dRowDetail["Price"] = Math.Round((50.00), 2).ToString("#0.00");//Birim Fiyat
            dRowDetail["Amount"] = 4;//Miktar
            dRowDetail["DiscPer"] = 0;//İskonto Oranı
            dRowDetail["Vat"] = 18;//KDV Oranı
            dRowDetail["DiscCost"] = Math.Round((00.00), 2).ToString("#0.00");//İskonto Tutarı
            dRowDetail["VatMnt"] = Math.Round((9.00), 2).ToString("#0.00");//KDV Tutarı
            dRowDetail["Total"] = Math.Round((200.00), 2).ToString("#0.00");//Tutar
            dRowDetail["NetTotal"] = Math.Round((236.00), 2).ToString("#0.00");//Net Tutar

            myInvoice.dsRprInvoice.dtInvoiceDetail.Rows.Add(dRowDetail);
            myInvoice.DataMember = "dtInvoiceDetail";//Eğer bu satırı yazmazsanız detay da sadece ilk satırı görmüş olursunuz bu satır detayın hangi kaynaktan geldiğini belirdir. 
            myInvoice.ShowPreview();//Önizleme
            //myInvoice.ShowDesigner();//Dizayn Mod
        }
    }
}

 

KAYNAK KODU INDIR (SOURCE CODE DOWNLOAD ):     DevexXtraReportExample.rar (123,67 kb)

 

Umarım işinize yarar , iyi çalışmalar herkese...

Month List

Calendar

<<  August 2014  >>
MoTuWeThFrSaSu
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

View posts in large calendar