Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,036

HOME > .NET Framework > Forum > รบกวนผู้รู้ช่วยตอบคำถาม Project เกี่ยวกับการ update ข้อมูลจาก MSSQL2000 ไปบน Mysql ทุก ๆ 1 ชั่วโมงหน่อยค่ะ



 

รบกวนผู้รู้ช่วยตอบคำถาม Project เกี่ยวกับการ update ข้อมูลจาก MSSQL2000 ไปบน Mysql ทุก ๆ 1 ชั่วโมงหน่อยค่ะ

 



Topic : 051919



โพสกระทู้ ( 9 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook



ตอนนี้กำลังทำ Project ให้มีการ update ข้อมูลสินค้าคงเหลือ โดยข้อมูลจะอยู่ที่ Ms sql 2000 ซึ่งเป็นข้อมูล master ไปรับปรุงข้อมูลใน Mysql ซึ่งเป็นฐานข้อมูลของเว็บขายของ โดยจะทำการ update ทุก ๆ 1 ชั่วโมงโดยใช้ visual c# 2008 ค่ะ ซึ่งตอนนี้ตั้งไว้ว่าใ้ห้ทำการปรับปรุงข้อมูล ทุก ๆ นาทีที่ 30 ค่ะ แต่ปัญหาอยู่ตรงที่ พอ timer วิ่งไปถึงนาทีที่ 30 แล้ว ทำงานปกติ พอนาทีที่ 31 มันหยุดทำงานเลยทั้ง ๆ ยังทำการ update ข้อมูลไม่เสร็จ ไม่ทราบว่าต้องไปทำตรงไหนต่อเพื่อที่จะให้เวลายัง run ต่อไปเรื่อย ๆ โดยไม่ต้องสนใจว่าจะทำการ update อยู่ หรือไม่ แต่ถ้าถึงเวลาการ update ข้อมูลก็ให้ทำงานไปเลย ลักษณะเหมือนมีงานแทรกเข้ามาในช่วงเวลานั้น ๆ อ่ะค่ะ

ฟอร์ม
หน้าฟอร์ม

โค๊ด (เป็นโค๊ดที่ทดสอบการวิ่งของเวลาอ่ะค่ะ ยังไม่ได้ใส่ในส่วนของการ ลอง update จริง ๆ ค่ะ)

Code (C#)
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;
using System.Data.SqlClient;
using MySql.Data;
using MySql.Data.MySqlClient;

namespace internalStock1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Load += new EventHandler(Form1_Load);
        }
        public Timer timer = new Timer();
        
        public SqlConnection cx=null;
        public MySqlConnection conMysql=null;
        public DateTime rsDate;
        public SqlDataReader dtReader=null;
        public SqlDataReader dtReader2=null;
        public SqlCommand objCmd = null;
        String connectionString = "Data Source=nbx;Database=domestic;Integrated Security=SSPI";
        private void Form1_Load(object sender, EventArgs e)
        {
            timer.Start();
            timer.Tick += new EventHandler(nowTimer_Tick);
        }

        private void nowTimer_Tick(object sender, EventArgs e)
        {
            cx = new SqlConnection();
            cx.ConnectionString = connectionString;
            try
            {
                cx.Open();
            }
            catch (Exception e2)
            {
                label1.Text = "Error MySql : " + e2.Message.ToString();
            }
            finally
            {
                if (cx.State == ConnectionState.Closed)
                {
                    cx.Open();
                }
            }
            string sqlGetTime = "SELECT GetDate()";
            objCmd = new SqlCommand(sqlGetTime, cx);
            dtReader = objCmd.ExecuteReader();
            int tmpMM = 0;
            if(dtReader.Read())
            {
                rsDate = dtReader.GetDateTime(0);//Execute(sqlGetTime);

                rsDatetxt.Text = "" + rsDate;
                txt_minute.Text = rsDate.Minute.ToString();
                int rsMM = rsDate.Minute;
                int rsSS = rsDate.Second;
                txtHH.Text = rsDate.Hour.ToString();
                txtMM.Text = rsDate.Minute.ToString();
                txtSS.Text = rsDate.Second.ToString(); 
                if ((rsMM == 43)&&(rsSS==0)) { timeUpdate(rsMM,rsSS); }
            }
            objCmd.Dispose();
            dtReader.Dispose();
            dtReader.Close();
            dtReader = null;
            cx.Close();
        }
        public void timeUpdate(int rsMM,int rsSS) 
        {
                if (rsMM == 30)
                {
                    progressBar1.Minimum = 0;
                    progressBar1.Maximum = 100;
                    progressBar1.Step = 1;
                    if (progressBar1.Value < 100)
                    {
                        progressBar1.Value += 1;
                        label2.Text = progressBar1.Value.ToString() + "%";
                    }
                    if (progressBar1.Value >= 100)
                    {
                        nowTimer.Enabled = false;
                        MessageBox.Show("Completed.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        progressBar1.Value = 0;
                        label2.Text = "0%";
                    }                    
                }
                conn.Close();
                conMysql.Close();
        }
    }
}





Tag : .NET, MySQL, Ms SQL Server 2005, C#







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-11-20 10:25:42 By : koi_29 View : 1262 Reply : 2
 

 

No. 1



โพสกระทู้ ( 538 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ลองทำตามนี้ดูครับ เป็นการเพิ่ม flag เพื่อช่วยตรวจสอบดูว่างานทำเสร็จหรือยัง เพราะคุณตั้งเงื่อนไขว่า min == 30 พอ 31 มันก็ไม่เข้าเงื่อนไขมันก็ไม่ทำถูกแล้วครับ ลองดูครับ

Code (C#)
<font class="detailDesc"><font class="css_code">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;
using System.Data.SqlClient;
using MySql.Data;
using MySql.Data.MySqlClient;

namespace internalStock1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Load += new EventHandler(Form1_Load);
        }
        public Timer timer = new Timer();
        
        public SqlConnection cx=null;
        public MySqlConnection conMysql=null;
        public DateTime rsDate;
        public SqlDataReader dtReader=null;
        public SqlDataReader dtReader2=null;
        public SqlCommand objCmd = null;

        private bool bDoJob = false;    //เพิ่ม flag สำหรับตรวจการทำงาน

        String connectionString = "Data Source=nbx;Database=domestic;Integrated Security=SSPI";
        private void Form1_Load(object sender, EventArgs e)
        {
            timer.Start();
            timer.Tick += new EventHandler(nowTimer_Tick);
        }

        private void nowTimer_Tick(object sender, EventArgs e)
        {
            cx = new SqlConnection();
            cx.ConnectionString = connectionString;
            try
            {
                cx.Open();
            }
            catch (Exception e2)
            {
                label1.Text = "Error MySql : " + e2.Message.ToString();
            }
            finally
            {
                if (cx.State == ConnectionState.Closed)
                {
                    cx.Open();
                }
            }
            string sqlGetTime = "SELECT GetDate()";
            objCmd = new SqlCommand(sqlGetTime, cx);
            dtReader = objCmd.ExecuteReader();
            int tmpMM = 0;
            if(dtReader.Read())
            {
                rsDate = dtReader.GetDateTime(0);//Execute(sqlGetTime);

                rsDatetxt.Text = "" + rsDate;
                txt_minute.Text = rsDate.Minute.ToString();
                int rsMM = rsDate.Minute;
                int rsSS = rsDate.Second;
                txtHH.Text = rsDate.Hour.ToString();
                txtMM.Text = rsDate.Minute.ToString();
                txtSS.Text = rsDate.Second.ToString(); 
                if ((rsMM == 43)&&(rsSS==0)) { timeUpdate(rsMM,rsSS); }
            }
            objCmd.Dispose();
            dtReader.Dispose();
            dtReader.Close();
            dtReader = null;
            cx.Close();
        }
        public void timeUpdate(int rsMM,int rsSS) 
        {
                if (rsMM == 30 || bDoJob == true)
                {
                    progressBar1.Minimum = 0;
                    progressBar1.Maximum = 100;
                    progressBar1.Step = 1;
                    if (progressBar1.Value < 100)
                    {
                        bDoJob = true;  //เปิดไว้จนกว่า progress จะเต็ม
                        progressBar1.Value += 1;
                        label2.Text = progressBar1.Value.ToString() + "%";
                    }
                    if (progressBar1.Value >= 100)
                    {
                        bDoJob = false;   //ถ้า progress ครบ 100 ใ้ห้ปิดเพื่อไม่ให้เข้ามาทำงานใน function นี้อีก
                        nowTimer.Enabled = false;
                        MessageBox.Show("Completed.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        progressBar1.Value = 0;
                        label2.Text = "0%";
                    }                    
                }
                conn.Close();
                conMysql.Close();
        }
    }
}

</font></font>









ประวัติการแก้ไข
2010-11-20 10:41:37
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-20 10:39:52 By : salapao_codeman
 


 

No. 2



โพสกระทู้ ( 9 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ทำได้แล้วค่ะ เพิ่มเติมตามแนวทางที่คุณ codeman แนะนำ ขอบคุณมากค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-25 13:42:46 By : koi_29
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : รบกวนผู้รู้ช่วยตอบคำถาม Project เกี่ยวกับการ update ข้อมูลจาก MSSQL2000 ไปบน Mysql ทุก ๆ 1 ชั่วโมงหน่อยค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่