โปรแกรมบริหารจัดการเบี้ยยังชีพ/สอน C#.NET แบบเชิงลึก Real Time

ในห้อง 'คอมพิวเตอร์ & อินเตอร์เน็ต' ตั้งกระทู้โดย ledphong, 9 สิงหาคม 2014.

  1. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    ครั้งต่อไปจะพาเขียน WCF Service บน C#.NET

    หรือสร้างไฟล์ .dll นั่นเอง
     
  2. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    ก่อนอื่นจะเขียนโปรแกรมออกมาได้ดังใจต้อง...........

    1.ศึกษาของที่ตัวฐานข้อมูลก่อนว่าต้องเก็บข้อมูลอะไรไปบ้าง
    2.การแสดงผลว่าต้องแสดงอะไรออกไปบ้าง
    3.เครื่องที่ลงโปรแกรมที่เราเขียนขึ้นมารับไหวไหม
    4.ต้องปรับแก้ตัวโปรแกรมมีอะไรบ้าง
     
  3. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    DOT NET สำคัญฉะไหน?

    1.เครื่องลูกค้าโดยทั่วไปเขาไม่รู้หรอกว่าอะไรคือ DOT NET แต่ที่สำคัญรู้แต่ว่าเราเอาอะไรไปให้เขาใช้บ้าง

    =====================
    Windows XP,7 จะมี .NET 2.0 มาให้อยู่แล้ว ส่วนผู้เขียนให้เขียนรองรับตัวนี้หรือจะติดตั้งเพิ่มมาอีกก็ได้ขึ้นอยู่กับการเขียนโปรแกรมครับ โดยส่วนตัวผมแล้วเขียน C#.NET เขียน .NET Framework 4.0 (แบบลงเพิ่มเติมเอา)
     

    ไฟล์ที่แนบมา:

    • dotnet.jpg
      dotnet.jpg
      ขนาดไฟล์:
      134.3 KB
      เปิดดู:
      155
  4. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Primary Key สำคัญฉะไหนกับไม่กำหนดจะดีอย่างไร?

    ถ้าหากกำหนด Primary Key จะดีคือผู้เขียนโปรแกรมไม่ต้องมาพะวงว่ารันถึงแถวที่เท่าไหร่แล้ว แต่ก็มีข้อเสียคือหากเราจะทดลองคีย์ข้อมูลก่อนแล้วเวลามาลบข้อมูล GenID ครั้งต่อไปก้ได้เลขใหม่ไปเรื่อย ๆ สรุปผมไม่ใช้วิธีนี้อยู่แล้วใช้แบบไม่กำหนด Primary Key เพราะว่าผมกำหนด Gen ID เอาเองได้หากต้องการกลับไปใช้เลขที่ลบออกไปแล้วก็ยังใช้ได้ครับ
     
  5. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    เลือกฐานข้อมูลจะเลือก ตัวไหนถึงจะดีและเหมาะสมกับลูกค้า?

    1.MS Access ดีแต่ข้อมูลไม่เกิน 10,000 แถว ถ้าเกินล่ะอืดครับไม่เหมาะ
    2.SQL Server เขาว่าดีและก็แข็งแรงดี (ไมโครซอร์ฟบอกมาครับ)
    3.MySQL ดีอยู่ครับ เพราะว่าโรงพยาบาลเขาก็ใช้ตัวนี้อยู่ครับ
    4.ส่วน Oracle ยังไม่เห็นก็เลยไม่ออกความคิดเห็นครับ
     
  6. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    แล้วการแสดงผลข้อมูลเลือกอันไหนดีล่ะ?

    1.DataGridView สวยดีแต่หากข้อมูลเอะๆจะอืด (ดู MS Excel) เป็นหลักครับ
    2.ListView เหมาะสมมากเลยครับเพราะทางไมโครซอร์ฟเขาใช้ตัวนี้เป็นหลักตอนนำออกข้อมูลจะเห็นความแตกต่างอย่างโดยสิ้นเชิงเลยครับแต่การเขียนค่อนข้างยุ่งยากมากพอสมควรแต่ก้ไม่ยากเกินกำลังมนุษย์ใช่ไหมครับ
     
  7. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    เสปกเครื่องที่เขียนโปรแกรมล่ะจะเลือกแบบไหนดี?

    1.เลือกแบบ Core i7 ความเร็วสูง ๆ RAM สูง ๆไว้
    แต่ตอนเขียนผ่านแล้วนำไปติดตั้งที่เครื่องลูกก็ RAM แค่ 4 GB ก็พอดีแล้ว
    2.Windows 32bit หรือ 64bit ผมบอกเลยว่าคนที่ใช้นะตอนนี้ใช้ทั้ง 32 bitและ 64bit แต่ของเครื่องผมใช้ Notebook 3 ตัว ตัวหนึ่งใช้ 64bit ตัวหนึ่งใช้ 32 bit อีกตัวหนึ่งใช้ 32 bit ทดสอบโปรแกรมก่อนนำออกไปขายให้ลูกค้าเพราะอะไรถึงใช้ 3 ตัวแล้วแต่เหตุผลครับ ผมคนแรกที่ลงโปรแกรมเสริมในเครื่องน้อยเพื่อไม่รบกวนการบูตเครื่องและกินแรมครับ
     
  8. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    แล้วโปรแกรมที่เลือกใช้ล่ะเลือก VB.NET หรือ C#.NET?

    ผมบอกแล้วว่าคนส่วนใหญ่และทางไมโครซอร์ฟเขาใช้ทั้งสองตัวแต่ที่คนเขียน C#.NET มีมากมายเพราะโค้ดกระชับและเข้าถึงข้อมูลได้ดีกว่าแต่ก็ยังไม่มีการยืนยันจากทางไมโครซอร์ฟเอาเป็นว่าใครถนัดอะไรก็เลือกตามนั้นครับแต่ผมเลือก C#.NET เพราะว่า VB.NET มีข้อจำกัดอยู่บางเรื่องเช่นจุดทศนิยม 2.75 จะปัดเป็น 2.8 หรือ 2.7 อย่างนี้เป็นต้น ที่สำคัญเขาอนุรักษ์คนคอ VB 6.0 ไว้ไม่งั้นเขาคงต้องตัดออกจากสารระบบแล้ว
     
  9. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    LINQ ในส่วนตัวผมน่ะครับ

    อืดมากไม่เหมาะที่จะพัฒนาโปรแกรมออกมาขาย ที่สำคัญคนชอบเพราะว่าเหมือนข้าวไรบารี่ (แฟชั่นครับ) เกี่ยวอะไรกับข้าวครับ ผมว่าเหมาะสำหรับข้อมูล 100-200 Record เท่านั้นถ้าใช้กับโปรแกรมโรงพยาบาลแล้วใช้ LINQ จบกันเลยครับ หรือใช้ MS Access ก็จบกันอีก เขาไม่นิยมกัน
     
  10. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    เขียน Internet Browser บน C#.NET

    ประกาศค่าตัวแปรและโชว์กึ่งกลางจอ
    =================================
    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 WebBrowser
    {
    public partial class frmMain : Form
    {
    public frmMain()
    {
    InitializeComponent();
    StartPosition = FormStartPosition.CenterScreen;//จัดกึ่งกลางหน้า
    }

    private void frmMain_Shown(object sender, EventArgs e)
    {
    this.WindowState = FormWindowState.Maximized; // สั่งให้ฟอร์มลูกขยายเต็มจอ
    }
     
  11. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    2.โหลดให้เต็มจอและแก้ไข Script Error

    private void frmMain_Load(object sender, EventArgs e)
    {
    //======Auto Size Full Screen========
    webBrowser1.Anchor =
    AnchorStyles.Bottom |
    AnchorStyles.Right |
    AnchorStyles.Top |
    AnchorStyles.Left;
    //==============แก้ Script Error=====================
    webBrowser1.ScriptErrorsSuppressed = true;
    //=================================================
    }
     
  12. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    3.คำสั่งปุ่มต่าง ๆ

    private void GoButton_Click(object sender, EventArgs e)
    {
    if (String.IsNullOrEmpty(UrlTextBox.Text) || UrlTextBox.Text.Equals("about:blank"))
    {
    MessageBox.Show("Enter a valid URL.");
    UrlTextBox.Focus();
    return;
    }
    OpenURLInBrowser(UrlTextBox.Text);
    }

    private void OpenURLInBrowser(string url)
    {
    if (!url.StartsWith("http://") && !url.StartsWith("https://"))
    {
    url = "http://" + url;
    }
    try
    {
    webBrowser1.Navigate(new Uri(url));
    }
    catch (System.UriFormatException)
    {
    return;
    }
    }

    private void UrlTextBox_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.Enter)
    {
    GoButton.PerformClick();
    }
    }

    private void HomeButton_Click(object sender, EventArgs e)
    {
    webBrowser1.GoHome();
    }

    private void BackButton_Click(object sender, EventArgs e)
    {
    if (webBrowser1.CanGoBack)
    webBrowser1.GoBack();
    }

    private void NextButton_Click(object sender, EventArgs e)
    {
    if (webBrowser1.CanGoForward)
    webBrowser1.GoForward();
    }

    private void RefreshButton_Click(object sender, EventArgs e)
    {
    webBrowser1.Refresh();
    }

    private void SaveButton_Click(object sender, EventArgs e)
    {
    webBrowser1.ShowSaveAsDialog();
    }

    private void PrintPreviewButton_Click(object sender, EventArgs e)
    {
    webBrowser1.ShowPrintPreviewDialog();
    }

    private void PrintButton_Click(object sender, EventArgs e)
    {
    webBrowser1.ShowPrintDialog();
    }

    private void PropertiesButton_Click(object sender, EventArgs e)
    {
    webBrowser1.ShowPropertiesDialog();
    }
     
  13. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    4.กำหนด Url

    พิมพ์ Google ตั้ง Default เอาไว้
     

    ไฟล์ที่แนบมา:

    • tagpage.jpg
      tagpage.jpg
      ขนาดไฟล์:
      226.4 KB
      เปิดดู:
      97
  14. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    เขียนคำสั่งบังคับหุ่นยนต์ WPF Control (XAML) on C#.NET

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;

    using System.IO.Ports;

    namespace MaxControl2012
    {
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    ///



    public partial class MainWindow : Window
    {

    // robot serial port
    static SerialPort _serialPort;
    //_serialPort = new SerialPort();



    public MainWindow()
    {
    InitializeComponent();
    }

    private int init_serial_port()
    {

    // Create a new SerialPort object with default settings.

    _serialPort = new SerialPort();

    // Allow the user to set the appropriate properties.
    _serialPort.PortName = "COM5";
    _serialPort.BaudRate = 57600;
    // _serialPort.Parity = Parity.None;
    // _serialPort.DataBits = 8;
    // _serialPort.StopBits = StopBits.One;
    // _serialPort.Handshake = Handshake.None;

    // Set the read/write timeouts
    // _serialPort.ReadTimeout = 500;
    // _serialPort.WriteTimeout = 500;


    _serialPort.Open();


    if (_serialPort == null)
    {
    txtCommand.Text = "Serial Port Still Null";
    return (0);

    }
    else
    {
    txtCommand.Text = "Port Open";
    return (1);
    }

    }

    private int send_command(string Command)
    {

    try
    {
    _serialPort.Write(Command);
    return (1);
    }
    catch (Exception)
    {
    // comm error
    return (0);
    }

    }


    private void btnForward_Click(object sender, RoutedEventArgs e)
    {
    txtCommand.Text = "foward";

    send_command("f");

    }

    private void btnRight_Click(object sender, RoutedEventArgs e)
    {
    txtCommand.Text = "right";


    send_command("r");

    }

    private void btnBack_Click(object sender, RoutedEventArgs e)
    {
    txtCommand.Text = "backward";


    send_command("b");

    }

    private void btnStop_Click(object sender, RoutedEventArgs e)
    {
    txtCommand.Text = "stop";


    send_command("s");
    }

    private void btnLeft_Click(object sender, RoutedEventArgs e)
    {
    txtCommand.Text = "left";


    send_command("l");
    }

    private void btnComm_Click(object sender, RoutedEventArgs e)
    {
    int status = 0;
    txtCommand.Text = "Init Comm...";
    status=init_serial_port();

    if (status == 1)
    {
    btnComm.IsEnabled = false;
    txtCommand.Text = "Comm Port Opeon";
    }
    else
    {
    txtCommand.Text = "Comm Port Error";
    }

    }

    private void btnComm_Click_1(object sender, RoutedEventArgs e)
    {

    int status = 0;
    txtCommand.Text = "Init Comm...";
    status = init_serial_port();

    if (status == 1)
    {
    btnComm.IsEnabled = false;
    txtCommand.Text = "Comm Port Opeon";
    }
    else
    {
    txtCommand.Text = "Comm Port Error";
    }

    }

    }

    }
     

    ไฟล์ที่แนบมา:

    • robot.jpg
      robot.jpg
      ขนาดไฟล์:
      136.8 KB
      เปิดดู:
      133
  15. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    เขียน C#.NET เพื่อหาเบอร์ IP Address บน Internet

    using System.Diagnostics;
    using System;
    using System.Windows.Forms;
    using System.Collections;
    using System.Drawing;
    using Microsoft.VisualBasic;
    using System.Data;
    using System.Collections.Generic;


    using System.Net;

    namespace IP_Address_of_Host
    {
    public partial class Form1
    {
    public Form1()
    {
    InitializeComponent();
    }

    #region Default Instance

    private static Form1 defaultInstance;

    /// <summary>
    /// Added by the VB.Net to C# Converter to support default instance behavour in C#
    /// </summary>
    public static Form1 Default
    {
    get
    {
    if (defaultInstance == null)
    {
    defaultInstance = new Form1();
    defaultInstance.FormClosed += new FormClosedEventHandler(defaultInstance_FormClosed);
    }

    return defaultInstance;
    }
    }

    static void defaultInstance_FormClosed(object sender, FormClosedEventArgs e)
    {
    defaultInstance = null;
    }

    #endregion
    public void Button1_Click(System.Object sender, System.EventArgs e)
    {
    IPHostEntry hostname = Dns.GetHostByName(TextBox1.Text);
    IPAddress[] ip = hostname.AddressList;
    TextBox2.Text = (string) (ip[0].ToString());
    }
    }
    }
     

    ไฟล์ที่แนบมา:

    • ip_address.jpg
      ip_address.jpg
      ขนาดไฟล์:
      105.3 KB
      เปิดดู:
      98
  16. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    C#.NET การคำนวณอายุแบบละเอียด โดยเทียบการคำนวณ MS Access เป็นหลัก

    ที่ทุกคนต้องเข้าใจ
    ==============================
    เช่น โจทย์บอกว่า นายเอ เกิดวันที่ 30 กันยายน 2495
    ปีงบประมาณ 2557 นายเอ มีอายุเท่าไร (ปีงบประมาณ 2557 คิดอายุ ณ 30 กันยายน 2556)
    ปีงบประมาณ 2558 นายเอ มีอายุเท่าไร (ปีงบประมาณ 2558 คิดอายุ ณ 30 กันยายน 2557)
    หากเขามีอายุอยู่ระหว่าง 60-69 ปี เขาจะได้รับเบี้ยยังชีพผู้สูงอายุ 600 บาททันที
    ==============================
    คำนวณ ใน MS Access 2003
    สูตรปีงบประมาณ 2557
    ==============================
    age: Int(DateDiff("m",[birthdate],"30/9/2556")/12) & " ปี " & (DateDiff("m",[birthdate],"30/9/2556") Mod 12) & " เดือน " & (DateDiff("d",[birthdate],"30/9/2556") Mod 30.425) & " วัน "
    ==============================
    คำนวณ ใน MS Access 2003
    สูตรปีงบประมาณ 2558
    ==============================
    age: Int(DateDiff("m",[birthdate],"30/9/2557")/12) & " ปี " & (DateDiff("m",[birthdate],"30/9/2557") Mod 12) & " เดือน " & (DateDiff("d",[birthdate],"30/9/2557") Mod 30.425) & " วัน "
    ==============================
    คำตอบ ใน MS Access 2003
    ปีงบประมาณ 2557 นายเอ มีอายุ = 61 ปี 0 เดือน 20 วัน
    ปีงบประมาณ 2558 นายเอ มีอายุ = 62 ปี 0 เดือน 25 วัน
     
  17. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    คำนวณใน C#.NET

    ปีงบประมาณ 2557
    (CAST(DATEDIFF(DD,Birthdate,'2013-09-30')/365.25 As INT ))
    =====================================
    ปีงบประมาณ 2558
    (CAST(DATEDIFF(DD,Birthdate,'2014-09-30')/365.25 As INT ))
    =====================================
    ผลการคำนวณ
    ปีงบประมาณ 2557 นายเอมีอายุ =60 ปี (ผิดครับต้องเป็น 61 ปี)
    ปีงบประมาณ 2558 นายเอมีอายุ =61 ปี (ผิดครับต้องเป็น 62 ปี)
    สรุปการคำนวณวันในภาษา C#.NET ที่ตรงกับวันฐานต้องปรับแก้วันที่ครับ
    =====================================
    การปรับแก้จากคนเกิดวันที่ 30 กันยายน ปีอะไรก็ได้ให้แก้เป็นวันที่ 29 กันยายน ถึงจะได้ค่าที่ตรงกับ MS Access
    ผมจึงพัฒนาโปรแกรมเบี้ยยังชีพที่มีระบบเช็ควันที่ 30 กันยายน ปีอะไรก็ได้ให้ด้วย จึงจะนับว่าสมบูรณ์มากที่สุด
    =====================================
    นักพัฒนาโปรแกรมเมอร์คนอื่นๆ คิดเหมือนผมหรือไม่ หากคิดไม่เหมือนแสดงว่าคุณคงไม่เคยทดสอบการใช้งานโปรแกรมแน่ๆๆ
     
  18. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    SQL Server 2008 กับชนิดของฐานข้อมูล

    bigint
    int
    smallint
    tinyint
    ว่าต้องการเก็บข้อมูลปริมาณมากน้อยเพียงใด
    ===============================
    Data type
    Range
    Storage
    ===============================
    bigint
    -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)
    8 Bytes
    ===============================
    int
    -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)
    4 Bytes
    ===============================
    smallint
    -2^15 (-32,768) to 2^15-1 (32,767)
    2 Bytes
    ===============================
    tinyint
    0 to 255
    1 Byte
     
  19. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    Version New R.7.0

    โปรแกรมเบี้ยยังชีพ เวอร์ชั่นใหม่ R.7.0 (บน C#.NET,SQL Server 2008R2)
     

    ไฟล์ที่แนบมา:

    • version_new.jpg
      version_new.jpg
      ขนาดไฟล์:
      303.8 KB
      เปิดดู:
      139
  20. ledphong

    ledphong เป็นที่รู้จักกันดี

    วันที่สมัครสมาชิก:
    28 มีนาคม 2009
    โพสต์:
    1,425
    ค่าพลัง:
    +165
    หากต้องการใช้งานโปรแกรมที่เขียนรันบนทุก OS

    ควรเลือก C#.NET ไปเลยครับแสดงผลแบบ ListView ไม่ต้องแสดงผลแบบ GridView หรือ WPF เพราะมันช้า
     

แชร์หน้านี้

Loading...