 |
|
รบกวนด้วยครับ VB2008 ทำ 2 Connection จะ SELECT INTO MS-SQL ระหว่าง access2000 กับ MS-SQL 2005 โดยเลือกจาก DateTimePicker ครับ |
|
 |
|
|
 |
 |
|
รบกวนด้วยครับ VB2008 Express ทำ 2 Connection จะ SELECT INTO MS-SQL ระหว่าง access2000 กับ MS-SQL 2005 Input จาก DataTimePicker 2 Object ครับ
ตอนนี้ผม Connect ได้แล้ว แต่จะดึงข้อมูลจาก Access มาใส่ใน MS-SQL 2005 ครับ
เคยใช้ SELECT INTO แต่พอเป็น VB แล้วงงครับ
ตัวอย่างโค้ดครับ
Code (VB.NET)
Imports System.Data.SqlClient
Imports System.Data.OleDb
Public Class Form1
' connection sql
Dim con As New SqlConnection("Data Source=127.0.0.1;Uid=sa;PASSWORD=OnlY@dmln;Database=finger;integrated Security=true")
Dim da As SqlDataAdapter
Dim ds As New DataSet
' connect access
Dim Conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\finger\finger.mdb")
Dim accda As OleDbDataAdapter
Dim accds As New DataSet
' ส่วนแสดงผลครับ
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'DataGrid เอามาแสดงผลว่า Connect ได้ครับ
'ต้นทาง
da = New SqlDataAdapter("select TOP 100 USERID, CHECKTIME from CHECKINOUT where CHECKTIME BETWEEN CONVERT(DATETIME, '2006-01-01 00:00:00', 102) AND CONVERT(DATETIME, '2006-12-31 00:00:00', 102)", con)
da.Fill(ds, "USERID")
DataGridView1.DataSource = ds.Tables("USERID")
'ปลายทาง
accda = New OleDbDataAdapter("select TOP 100 USERID, CHECKTIME from CHECKINOUT", Conn)
accda.Fill(accds, "USERID")
DataGridView2.DataSource = accds.Tables("USERID")
End Sub
ข้อมูลจะถูกเลือกจากเงื่อนไขวันที่ โดยต้นทางเก็บใน access 2000 ครับ รูปแบบวันที่ใน Access คือ dd/mm/yyyy hh:mm ครับ
ผมลองใช้ between แล้ว output ไม่ออกครับ
ขอบคุณล่วงหน้าครับ
Tag : .NET, Ms Access, Ms SQL Server 2008, Win (Windows App), VB.NET
|
ประวัติการแก้ไข 2011-08-04 18:24:23
|
 |
 |
 |
 |
Date :
2011-08-04 17:57:56 |
By :
pnptoday |
View :
1990 |
Reply :
7 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Imports System.Data.SqlClient
Imports System.Data.OleDb
Public Class Form1
' connection sql
Dim con As New SqlConnection("Data Source=127.0.0.1;Uid=sa;PASSWORD=OnlY@dmln;Database=finger;integrated Security=true")
Dim da As SqlDataAdapter
Dim ds As New DataSet
' connect access
Dim Conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\finger\finger.mdb")
Dim accda As OleDbDataAdapter
Dim accds As New DataSet
' ส่วนแสดงผลครับ
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'DataGrid เอามาแสดงผลว่า Connect ได้ครับ
'ต้นทาง
da = New SqlDataAdapter("select TOP 100 USERID, CHECKTIME from CHECKINOUT where CHECKTIME BETWEEN CONVERT(DATETIME, '2006-01-01 00:00:00', 102) AND CONVERT(DATETIME, '2006-12-31 00:00:00', 102)", con)
da.Fill(ds, "USERID")
DataGridView1.DataSource = ds.Tables("USERID")
'ปลายทาง
accda = New OleDbDataAdapter("select TOP 100 USERID, CHECKTIME from CHECKINOUT", Conn)
accda.Fill(accds, "USERID")
DataGridView2.DataSource = accds.Tables("USERID")
End Sub
|
 |
 |
 |
 |
Date :
2011-08-04 18:13:25 |
By :
pnptoday |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
รันใน SQL Query Analyzer มันผ่านหรือเปล่าครับ 
|
 |
 |
 |
 |
Date :
2011-08-04 21:26:52 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เรียน mr.win
ms-access ผมลองใช้ตัวช่วยสร้าง Query จากตัวมันเองผลลัพท์ ออกปกติครับ
โดยใช้ between #01/01/2011# and #31/01/2011# ครับ
เรียน คุณหางอึ่งครับ
ใช่ครับ access ใช้ between ใน VB แล้ว output ไม่ออกเช่นกันครับ
ผมลองใส่ # แล้วไม่ได้เหมือนกันครับ
ส่วนรูปภาพคือตัวอย่างโปรแกรมที่ต้องการครับ

ควรใช้คำสั่งประมาณไหนครับ
ผมไม่ค่อยเข้าใจเรื่องการใช้ คำสั่งใน VB ครับเคยเขียนแต่ PHP
ถ้าจะใช้รูปแบบ Select into ms-sql from (select ms-access where CHECKTIME between text1.text and text2.text)
ประมาณนี้ต้องกำหนดตัวแปรหรือกำหนด parameter ยังไงครับ
ขอบคุณมากครับ
|
 |
 |
 |
 |
Date :
2011-08-05 12:20:52 |
By :
pnptoday |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มาติดตามดูครับโค๊ดเค้าเขียนกันยังไง อิอิ
|
 |
 |
 |
 |
Date :
2011-08-10 13:07:27 |
By :
Guest |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อับเดทข้อมูลครับ
ล่าสุดผมใช้ select between จาก access ได้แล้วนะครับ
ตาม Code ด้านล่างครับ
DateTimePicker ต้องกำหนด Format Property เป็น short ด้วยนะครับ
Code (VB.NET)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
accda = New OleDbDataAdapter("select TOP 100 CHECKINOUT.USERID, CHECKINOUT.CHECKTIME from CHECKINOUT WHERE (CHECKINOUT.CHECKTIME between #" & DateTimePicker1.Text & "# and #" & DateTimePicker2.Text & "#) ", Conn)
accda.Fill(accds, "USERID")
DataGridView2.DataSource = accds.Tables("USERID")
End Sub
แต่ยังเหลือการ Insert Into SQL from access ต้องเขียนโค๊ดประมาณไหน
รบกวนผู้รู้ช่วยชี้แนะด้วยครับ
ขอบคุณครับสำหรับแหล่งแบ่งปันความรู้ที่ดีแห่งนี้
|
ประวัติการแก้ไข 2011-08-11 18:05:46
 |
 |
 |
 |
Date :
2011-08-11 18:05:01 |
By :
pnptoday |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วครับ !!!!!
ต้องใช้ Loop while มาช่วยครับ ได้แนวคิดจากเพื่อนร่วมอาชีพแนะนำมาครับ
โดยต้อง select ms-access มาทีละ Record มาเก็บไว้ในตัวแปล
แล้วนำค่าตัวแปลที่ได้มา Insert INTO ที่ SQL อีกทีครับ
เรื่องการ Select between จาก ms-Access ต้องระวังเรื่องวันที่ครับ
เพราะ ms-access ของผมมันเก็บไว้เป็น yyyy/mm/dd hh:mm:ss
แต่เวลา Query ออกมาดันต้องใช้คำสั่ง between #mm/dd/yyyy# and #mm/dd/yyyy#
ทำให้พอ Insert ไปที่ SQL แล้ว Format date ไม่ตรงต้องแปลงค่าให้ตรงก่อน
โดยการเอามาเก็บในตัวแปลแล้วใช้ substring ในการแยกตำแหน่งวันเดือนปี
เพื่อมาจัดเรียงอีกครั้งครับ
ขอบคุณอีกครับสำหรับเพื่อนๆ พี่ๆ ที่ชี้แนะแนวทางครับ
Code (VB.NET)
While valcount <= valcutend
strOleAdd = "select CHECKINOUT.AUTOID, CHECKINOUT.USERID, CHECKINOUT.CHECKTIME from CHECKINOUT WHERE (CHECKINOUT.AUTOID =" & valcount & ")"
objCommand = New OleDbCommand(strOleAdd, objConnection)
'Get a datareader
objDataReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection)
iarray = 0
ReDim valUSERID(100)
ReDim valCHECKTIME(100)
objDataReader.Read()
valUSERID(iarray) = objDataReader("USERID")
valCHECKTIME(iarray) = objDataReader("CHECKTIME")
valCHECKTIMEConvDay = valCHECKTIME(0)
valCHECKTIMEConvMonth = valCHECKTIME(0)
valCHECKTIMEConvYear = valCHECKTIME(0)
valCHECKTIMEConvDay = valCHECKTIMEConvDay.Substring(0, 2)
valCHECKTIMEConvMonth = valCHECKTIMEConvMonth.Substring(3, 2)
valCHECKTIMEConvYear = valCHECKTIMEConvYear.Substring(6, 13)
valCHECKTIMEConvOK = "" & valCHECKTIMEConvMonth & "/" & valCHECKTIMEConvDay & "/" & valCHECKTIMEConvYear & ""
'MessageBox.Show(valCHECKTIMEConvDay, valCHECKTIMEConvMonth)
lbUSERID.Text = valUSERID(0)
lbCHECKTIME.Text = valCHECKTIME(0)
lbusershow.Text = valcount.ToString
daSQLAdd = New SqlCommand("INSERT INTO CHECKINOUT (USERID, CHECKTIME, CHECKTYPE, sn) values ('" & valUSERID(0) & "', '" & valCHECKTIMEConvOK & "','" & branch & "', '" & valcount & "')", con)
daSQLAdd.Connection.Open()
daSQLAdd.ExecuteNonQuery()
daSQLAdd.Connection.Close()
valcount += 1
valprgInc += 1
prgbar.Value = (valprgInc / countall) * 100
End While
|
 |
 |
 |
 |
Date :
2011-08-17 20:55:13 |
By :
pnptoday |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|