 |
|
รบกวนช่วยหน่อย นะค่ะ VB ไม่ยอมบันทึก ด่วน เลย นะค่ะ ปวดหัวมากเลย |
|
 |
|
|
 |
 |
|

Code
[code][/code]Code (VB.NET)
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
If txtMemId.Text = "" Then
MessageBox.Show("กรุณาระบุรหัสลูกค้าด้วยค่ะ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtMemId.Focus()
Exit Sub
End If
If chkNotMember.Checked = True Then
If txtMemName.Text = "" Then
MessageBox.Show("กรุณาระบุชื่อลูกค้าด้วยค่ะ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtMemName.Focus()
Exit Sub
End If
End If
If lsvFoodList.Items.Count = 0 Then
MessageBox.Show("กรุณาป้อนรายการสั่งอาหารด้วยค่ะ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtFoodId.Focus()
Exit Sub
End If
Dim sqlAdd As String = ""
Dim comAdd As OleDbCommand = New OleDbCommand
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
Try
If MessageBox.Show("คุณต้องการบันทึกรายการอาหารที่สั่ง ใช่หรือไม่?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
AutoGenerateTranID()
'บันทึกลงส่วน ของ CusOder
sqlAdd = "INSERT INTO Cus0der (Or_No,Ore_date,Mem_Id,Total_Price,Persent,Table_No,No_Count) "
sqlAdd &= " VALUES('" & LastTransID = "" & "',"
sqlAdd &= "'" & dtpAdmitDate.Value.ToShortDateString & "',"
sqlAdd &= "'" & txtMemId.Text & "',"
sqlAdd &= "'" & lbltotal.Text & "',"
sqlAdd &= "'" & lblDiscount.Text & "',"
sqlAdd &= "'" & cboTable.Visible & "',"
sqlAdd &= "'" & lblSumBeforeDiscount.Text & ")"
'sqlAdd &= "0,'0')"
With comAdd
.CommandType = CommandType.Text
.CommandText = sqlAdd
.Connection = Conn
'MessageBox.Show(comAdd.CommandText.ToString())
comAdd.ExecuteNonQuery()
End With
Dim i As Integer = 0
Dim tmpFoodId As String = ""
Dim sqlFood As String = ""
Dim tmptxtAmount As Integer = 0
Dim tmplbltotal As Integer = 0
Dim tmpAmount As Integer = 0
Dim tmplblSalePrice As Integer = 0
Dim tmpSum As Integer = 0
Dim tmpDiscount As Integer = 0
Dim tmpNet As Integer = 0
Dim tmpRentDate As Date
Dim tmpReturnDate As Date
tmpRentDate = Date.Now
If rIsMember = "1" Then
rRentRateDiscount = 0
End If
For i = 0 To lsvFoodList.Items.Count - 1
sqlFood = "INSERT INTO Sale(Or_No,Food_Id,Unit_Price,"
sqlFood &= " Amount,Total"
sqlFood &= " VALUES('" & LastTransID & "',"
tmpFoodId = lsvFoodList.Items(i).SubItems(0).Text
tmptxtAmount = CInt(lsvFoodList.Items(i).SubItems(2).Text)
tmplbltotal = CInt(lsvFoodList.Items(i).SubItems(3).Text)
tmpAmount = CInt(lsvFoodList.Items(i).SubItems(4).Text)
sqlAdd &= "'" & tmpFoodId & "',"
sqlAdd &= "'" & tmpRentDate & "',"
tmpReturnDate = tmpRentDate.AddDays(tmplbltotal)
sqlAdd &= "'" & tmpReturnDate & "',"
sqlAdd &= tmptxtAmount & ","
tmpSum = (tmptxtAmount * tmplblSalePrice)
tmpDiscount = CInt(tmpSum * rRentRateDiscount)
tmpNet = tmpSum - tmpDiscount
sqlAdd &= tmpNet & ","
sqlAdd &= "'0')"
With comAdd
.CommandText = sqlAdd
.ExecuteNonQuery()
End With
sqlFood = "SELECT Food_Id,Food_Name,Type_Id,Price FROM Food"
sqlFood &= " WHERE (ISBN='" & tmpFoodId & "')"
da.SelectCommand.CommandText = sqlFood
da.Fill(ds, "Food")
With comAdd
.CommandText = sqlAdd
.ExecuteNonQuery()
End With
Next
If chkNotMember.Checked = True Then
Dim sqlMem As String = ""
Dim comMember As OleDbCommand = New OleDbCommand
sqlMem = "INSERT INTO Member (Mem_ID,Mem_Name,MemId_Card,Mem_Add, "
sqlMem &= " Mem_Phone,DateRegis)"
sqlMem &= " VALUES ('" & txtMemId.Text & "',"
sqlMem &= "'" & txtMemName.Text & "',"
sqlMem &= "'" & txtidcard.Text & "',"
sqlMem &= "'" & txtMemAdd.Text & "',"
sqlMem &= "'" & txtphone.Text & "',"
'sqlMem &= "'"
If OptMale.Checked = True Then
sqlMem &= "'=ชาย',"
ElseIf OptFemale.Checked = True Then
sqlMem &= "'หญิง',"
End If
sqlMem &= "'" & txtidcard.Text & "',"
sqlMem &= "'" & txtMemAdd.Text & "',"
sqlMem &= "'" & txtphone.Text & "',"
'sqlMem &= "'0',"
sqlMem &= "'" & tmpRentDate & "',"
sqlMem &= "'" & tmpRentDate & "',"
sqlMem &= "'', '1','0')"
With comMember
.CommandType = CommandType.Text
.CommandText = sqlMem
.Connection = Conn
.ExecuteNonQuery()
End With
End If
MessageBox.Show("บันทึกรายการเช่าหนังสือเรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
If IsInstallPrinter() = True Then
If prDlg.ShowDialog = Windows.Forms.DialogResult.OK Then
'prDoc.Print()
End If
Else
MessageBox.Show("กรุณาติดตั้งเครื่อง Printer ก่อนสั่งพิมพ์เอกสาร", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
ClearAllMemberData()
ClearAllFoodData()
lsvFoodList.Items.Clear()
lblSumBeforeDiscount.Text = "0"
lblDiscount.Text = "0"
lblNet.Text = "0"
chkNotMember.Checked = False
'cboMemberType.SelectedIndex = 0
txtMemId.Enabled = True
txtMemId.Focus()
End If
Catch ErrProcess As Exception
MessageBox.Show("ไม่สามารถบันทึกรายการสั่งอาหารได้ เนื่องจาก " & ErrProcess.Message, "ข้อผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Exit Sub
End Try
End Sub
ช่วยแก้ให้หน่อย นะค่ะ
ขอบคุณค่ะ
Tag : - - - -
|
|
 |
 |
 |
 |
Date :
2010-02-02 19:08:31 |
By :
ยัยใบบ้า |
View :
2397 |
Reply :
58 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code
sqlFood = "INSERT INTO Sale(Or_No,Food_Id,Unit_Price,"
sqlFood &= " Amount,Total"
sqlFood &= " VALUES('" & LastTransID & "',"
tmpFoodId = lsvFoodList.Items(i).SubItems(0).Text
tmptxtAmount = CInt(lsvFoodList.Items(i).SubItems(2).Text)
tmplbltotal = CInt(lsvFoodList.Items(i).SubItems(3).Text)
tmpAmount = CInt(lsvFoodList.Items(i).SubItems(4).Text)
sqlAdd &= "'" & tmpFoodId & "',"
sqlAdd &= "'" & tmpRentDate & "',"
tmpReturnDate = tmpRentDate.AddDays(tmplbltotal)
sqlAdd &= "'" & tmpReturnDate & "',"
sqlAdd &= tmptxtAmount & ","
tmpSum = (tmptxtAmount * tmplblSalePrice)
tmpDiscount = CInt(tmpSum * rRentRateDiscount)
tmpNet = tmpSum - tmpDiscount
sqlAdd &= tmpNet & ","
sqlAdd &= "'0')"
ตกวงเล็บมั้งครับ
และอาจฟิวส์ไม่ครบนะครับ
|
 |
 |
 |
 |
Date :
2010-02-02 19:39:16 |
By :
Sek-Artdrinker |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้เฉพาะส่วนนี้ หรอ ค่ะ
มัน ก้อติดเหมือนเดิม อ่ะค่ะ
ช่วยหน่อย นะค่ะ
|
 |
 |
 |
 |
Date :
2010-02-02 19:59:38 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้า ERROR เหมือนเดิม ก็ลองเช็คดูอีทีอะครับว่า ฟิวตรงกับค่าที่ใส่ไปมั้ย และเช็คเรื่อง field type ด้วย
สำคัญหา error ให้ได้ก่อนนะครับว่า error ตรงใหน
|
 |
 |
 |
 |
Date :
2010-02-02 20:12:03 |
By :
Sek-Artdrinker |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ได้ เลย อ่ะค่ะ
ลองแล้ว ก้อไม่ได้
หมด หนทาง แล้ว จริงๆ
|
 |
 |
 |
 |
Date :
2010-02-02 20:39:01 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ค่อยๆไล่ดูครับ พวก เขาคู่ เขาเดี่ยวนี่ปวดหัวครับ
|
 |
 |
 |
 |
Date :
2010-02-02 23:26:09 |
By :
KohDev |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไปแก้ตรงฐานข้อมูลให้เลือกรหัสอาหารใช้ซ้ำกันได้ตรงใกล้กับดัชนี
|
 |
 |
 |
 |
Date :
2010-02-03 08:24:22 |
By :
kvang_khanongdet |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตรงไหน ล่ะค่ะ
ใช้ ฐาน แอกเสดนะ ค่ะ
|
 |
 |
 |
 |
Date :
2010-02-03 09:26:57 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

แก้ จนกลายเป็นแบบนี้ อ่ะ ค่ะ
มันเป็น อะไร อ่ะค่ะ
|
 |
 |
 |
 |
Date :
2010-02-03 10:00:18 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หนังสือเล่มไหนมันชอบสอนให้เขียน command string แบบนี้อะ อยากไม่เผาสำนักพิมพ์มันจริงๆ
Code (VB.NET)
sqlMem = "INSERT INTO Member (Mem_ID,Mem_Name,MemId_Card,Mem_Add, "
sqlMem &= " Mem_Phone,DateRegis)"
sqlMem &= " VALUES ('" & txtMemId.Text & "',"
sqlMem &= "'" & txtMemName.Text & "',"
sqlMem &= "'" & txtidcard.Text & "',"
sqlMem &= "'" & txtMemAdd.Text & "',"
sqlMem &= "'" & txtphone.Text & "',"
'sqlMem &= "'"
string ขาดๆ ไม่เป็นเส้นเดียวกัน เวลาแทนค่าก็ยาก แก้เป็นแบบนี้ดีกว่าไหม
Code (VB.NET)
sqlMem = "Insert Into [Member] ([Mem_ID], [Mem_Name], [MemId_Card], [Mem_Add], [Mem_Phone], [DateRegis]) " & _
"Values (" & _
"@Mem_ID, @Mem_Name, @MemId_Card, @Mem_Add, @Mem_Phone, @DateRegis" & _
")"
จับไปสร้างเป็น OleDbCommand แล้วแทนค่าแบบนี้ (จะได้กำหนด type ให้ data ที่ป้อนกับใน db ตรงกัน)
Code (VB.NET)
Dim comMember As OleDbCommand = New OleDbCommand(sqlMem, Conn)
comMember.Parameters.Add("@Mem_ID", OleDbType.Integer).Value = CInt(txtMemName.Text)
...
...
...
...
comMember.Parameters.Add("@DateRegis", OleDbType.Date).Value = CDate(อะไรเนี่ย)
ไม่ใช่อะไรๆ ก็จะป้อนไปแต่ string อย่างเดียว แล้วไอประเภทเปิด connection ไว้ตั้งแต่ที่บ้านอีก
จะเปิดไว้ทำไมหือ จะใช้แล้วค่อยเปิดก็ได้ เปิดแล้วก็ปิด ขอบ่นหน่อยเถอะ ยัง error ไม่หมดหรอก ยังเหลืออีกบานแก้ไปเรื่อยๆ แล้วกัน
ข้างบนไม่ได้ช่วยแก้ error ให้หรอกนะ แค่เห็นวิธีเขียนแล้วหงุดหงิด เลยขอบ่นอย่างเดียว
|
 |
 |
 |
 |
Date :
2010-02-03 10:39:43 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ก้อไม่เข้าใจอยู่ดี
V
V
V
เศร้าจิง ๆ โดนบ่น อีก
|
 |
 |
 |
 |
Date :
2010-02-03 10:58:23 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไกล์ดให้นิด
1. จำนวนฟิลที่จะ insert ต้องเท่ากับจำนวนฟิลของ value
2. ฟิลที่เป็น autonumber ไม่ต้อง insert
3. type ของ db กับ value ที่ป้อนต้องเป็น type เดียวกัน
เดี๋ยวนึกออกอีกจะมาเพิ่มคำแนะนำให้อีก แต่เหลือไป check error เอาเองนะ
โทษฐานตอนเรียนไม่ยอมซ้อนมือ เจองานจริงเข้าไปเลยไม่ทำไม่เป็น อิอิ (เห็นคนงานลนก้นแล้วมีความสุข )
|
 |
 |
 |
 |
Date :
2010-02-03 11:03:09 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ก้อคนไม่เข้าใจ
ทำไมพี่ต้งบ่น ด้วยอ่ะค่ะ
เศร้าจิง ๆ
|
 |
 |
 |
 |
Date :
2010-02-03 11:03:25 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ มีความสุข
แต่หนู ดิ เศร้า
ไม่ได้ นอน มาหลาย วันแล้ว
พีเซ็น ก้อใกล้
|
 |
 |
 |
 |
Date :
2010-02-03 11:05:36 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ก็ธรรมดา คิดว่าผมไม่เคยผ่านช่วงเวลานั้นหรือไง ทำตามที่บอกข้างบนนั่นแหละ ลองไล่ดู
เดี๋ยวก็ได้ใจเย็นๆ มันมีไม่กี่สาเหตุหรอกที่ insert ไม่ได้ อิอิ -D:
|
 |
 |
 |
 |
Date :
2010-02-03 11:20:41 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณนะค่ะ
แต่ ไม่ไหว แล้ว ล่ะ
พอแก้ ตรงนี้ได้ เดี๋ยว ก้อมี เหตุให้ต้องแก้ อีก
|
 |
 |
 |
 |
Date :
2010-02-03 11:24:33 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอา class ไปใช้ปะ
แก้ตรง connection string ให้เป็น file db ของคุณ
แล้วเอามาใช้โดยสร้างเป็น object จาก class นี้
AccessDatabase.vb
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Data
Imports System.Data.OleDb
Imports System.Windows.Forms
Namespace WindowsFormsApplication1
Class AccessDatabase
Private AccessConnection As OleDbConnection
Private AccessCommand As OleDbCommand
Private AccessCommandString As String
Public Sub New()
Dim AccessConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\AccessDatabase.mdb"
AccessConnection = New OleDbConnection(AccessConnectionString)
End Sub
Protected Property CommandString() As String
Get
Return AccessCommandString
End Get
Set (ByVal Value As String)
AccessCommandString = value
AccessCommand = New OleDbCommand(AccessCommandString, AccessConnection)
End Set
End Property
Protected Sub AddParameter(ByVal ParameterName As String, ByVal ParameterType As OleDbType, ByVal ParameterValue As Object)
AccessCommand.Parameters.Add(ParameterName, ParameterType)
AccessCommand.Parameters(ParameterName).Value = ParameterValue
End Sub
Protected Function ExecuteQuery() As DataTable
Dim dataTable As DataTable = New DataTable()
Try
Dim AccessDataAdapter As OleDbDataAdapter = New OleDbDataAdapter(AccessCommand)
AccessDataAdapter.Fill(dataTable)
Catch ex As Exception
MessageBox.Show(ex.Message)
Return Nothing
End Try
Return dataTable
End Function
Protected Function ExecuteScalar() As Object
Dim Result As Object = 0
Try
AccessConnection.Open()
Result = AccessCommand.ExecuteScalar()
AccessConnection.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Return 0
End Try
Return Result
End Function
Protected Function ExecuteNonQuery() As Boolean
Try
AccessConnection.Open()
AccessCommand.ExecuteNonQuery()
AccessConnection.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Return False
End Try
Return True
End Function
End Class
End Namespace
|
 |
 |
 |
 |
Date :
2010-02-03 11:45:34 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้ว จะเซปไ ด้ หรอ
ดูแล้ว ก้อ งง
|
 |
 |
 |
 |
Date :
2010-02-03 11:51:41 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
วิธีใช้ สร้าง class ตั้งชื่อว่า AccessDatabase.vb แล้วก็อบโค้ดด้านบนไปใส่
จะนั้นก็เรียกใช้ได้เลย
Insert
Dim InsertMember As AccessDataBase = New AccessDataBase()
InsertMember.CommandString = "Insert Into [Member] ([Mem_ID], [Mem_Name], [MemId_Card], [Mem_Add], [Mem_Phone], [DateRegis]) " & _
"Values (" & _
"@Mem_ID, @Mem_Name, @MemId_Card, @Mem_Add, @Mem_Phone, @DateRegis" & _
")"
InsertMember.AddParameter("@Mem_ID", OleDbType.Integer, CInt(txtMemId.Text))
InsertMember.AddParameter("@Mem_Name", OleDbType.VarChar, txtMemName.Text)
InsertMember.AddParameter("@MemId_Card", OleDbType.VarChar, txtidcard.Text)
InsertMember.AddParameter("@Mem_Add", OleDbType.VarChar, txtMemAdd.Text)
InsertMember.AddParameter("@Mem_Phone", OleDbType.VarChar, txtphone.Text)
InsertMember.AddParameter("@DateRegis", OleDbType.Date, CDate(txtDatePicker.Text))
InsertMember.ExecuteNonQuery()
วิธีใช้ก็แค่ป้อน command แทนค่าใน commmand แล้วก็สั่ง execute จะได้ไม่สับสนเวลาติดต่อฐานข้อมูล
Select 1
Dim Dt As DataTable = New DataTable()
Dim SelectExample As AccessDatabase = New AccessDatabase()
SelectExample.CommandString = "Select * From [MyTable]"
Dt = SelectExample.ExecuteQuery()
Select 2
Dim Dt As DataTable = New DataTable()
Dim SelectExample As AccessDatabase = New AccessDatabase()
SelectExample.CommandString = "Select * From [MyTable] Where [ID]=@ID"
SelectExample.AddParameter("@ID", OledbType.Integer, 8)
Dt = SelectExample.ExecuteQuery()
|
 |
 |
 |
 |
Date :
2010-02-03 11:56:23 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่เข้าใจของพี่คนเดียว
นู๋ ไม่เข้าใจหลอกค่ะ
|
 |
 |
 |
 |
Date :
2010-02-03 11:58:44 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอาน่าๆ จะแคร์ทำไมกับคำพูดของคนในเน็ต ดูแล้วทำความเข้าใจให้ทำงานเสร็จก็พอ
ปากผมแบบนี้แหละขึ้นหน้าหนึ่ง drama มาแล้ว ไม่ได้น่าภูมิใจเลย อิอิ
|
 |
 |
 |
 |
Date :
2010-02-03 13:05:28 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เเต่พี่ tungman ใจดีนะครับ ผม Confirm ครับ
Project ผมพี่เค้าช้วยได้ตั้งเยอะมากๆจริงๆ เเต่เราก็ต้องมีความเข้าใจเรื่องนั้นๆก่อนระดับนึงนะครับ
ยังไงลองไล่ๆดูครับ Run Single Step ดู ว่ามันทำงานยังไง
สู้ๆครับ ผมก็ทำ Project เหมือนกัน
|
 |
 |
 |
 |
Date :
2010-02-03 16:11:55 |
By :
artcode |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมขอเอาใจช่วยด้วยคนครับ พี่แพนด้ากัญชา เค้าก็บ่นไปงั้นละครับ อย่างคิดมากครับ สู้ๆ
|
 |
 |
 |
 |
Date :
2010-02-03 20:38:13 |
By :
Nameless |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เมามันไปหน่อย สงสัยไปจี้ถูกต่อมท้อเข้า หายไปเลย
ไม่แกล้งแล้วครับ กลับมาเถอะ มาทำต่อมา 
|
 |
 |
 |
 |
Date :
2010-02-03 21:06:50 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มัน เกิด ความผิดพลาด ขึ้น อีกอย่าง แล้ว อ่ะพี่

มัน เป็นรายหรอ ??
|
 |
 |
 |
 |
Date :
2010-02-03 21:16:18 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้ว INSERT ตารางแล้ว
จำเป็นต้อง มี UPDATE เสมอ ไป ป่ะ
งง ไปหมด แล้ว
|
 |
 |
 |
 |
Date :
2010-02-03 21:18:57 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
น่างงอยู่หรอก มัน error เกิดทุกบรรทัดเลย มาลองแก้ส่วนนี้ก่อน (ที่ผมจะง่วง)
Code (VB.NET)
'บันทึกลงส่วน ของ CusOder
'sqlAdd = "INSERT INTO Cus0der (Or_No,Ore_date,Mem_Id,Total_Price,Persent,Table_No,No_Count) " <-- อันนี้น่าสงสัยทำไมชื่อ table มันชื่อ Cus0der เลขศูนย์นะไม่ใช่ตัวโอ
'sqlAdd &= " VALUES('" & LastTransID = "" & "',"
'sqlAdd &= "'" & dtpAdmitDate.Value.ToShortDateString & "',"
'sqlAdd &= "'" & txtMemId.Text & "',"
'sqlAdd &= "'" & lbltotal.Text & "',"
'sqlAdd &= "'" & lblDiscount.Text & "',"
'sqlAdd &= "'" & cboTable.Visible & "',"
'sqlAdd &= "'" & lblSumBeforeDiscount.Text & ")"
'sqlAdd &= "0,'0')"
'With comAdd
'.CommandType = CommandType.Text
'.CommandText = sqlAdd
'.Connection = Conn
'MessageBox.Show(comAdd.CommandText.ToString())
'comAdd.ExecuteNonQuery()
'End With
Dim sqlAdd As String = "Insert Into [Cus0der] ([Or_No], [Ore_date], [Mem_Id], [Total_Price], [Persent], [Table_No], [No_Count]) " & _
"Values (" & _
"@Or_No, @Ore_date, @Mem_Id, @Total_Price, @Persent, @Table_No, @No_Count" & _
")"
Dim comAdd As OleDbCommand = New OleDbCommand(sqlAdd, Conn)
comAdd.Parameters.Add("@Or_No", OleDbType.Integer).Value = LastTransID
comAdd.Parameters.Add("@Ore_date", OleDbType.Date).Value = dtpAdmitDate.Value
comAdd.Parameters.Add("@Mem_Id", OleDbType.Integer).Value = CInt(txtMemId.Text)
comAdd.Parameters.Add("@Total_Price", OleDbType.Currency).Value = CDbl(lbltotal.Text)
comAdd.Parameters.Add("@Persent", OleDbType.Currency).Value = CDbl(lblDiscount.Text)
comAdd.Parameters.Add("@Table_No", OleDbType.VarChar).Value = cboTable.Visible '<-- อะไรครับ งง
comAdd.Parameters.Add("@No_Count", OleDbType.Currency).Value = CDbl(lblSumBeforeDiscount.Text)
comAdd.ExecuteNonQuery()
ผมกำหนด type ถูกรึเปล่า แล้ว cboTable.Visible คืออะไร
|
 |
 |
 |
 |
Date :
2010-02-03 21:30:59 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ส่วนอันนี้ ตกลง string command ใช้ sqlFood หรือ sqlAdd อันแน่
Code (VB.NET)
sqlFood = "INSERT INTO Sale(Or_No,Food_Id,Unit_Price,"
sqlFood &= " Amount,Total"
sqlFood &= " VALUES('" & LastTransID & "',"
tmpFoodId = lsvFoodList.Items(i).SubItems(0).Text
tmptxtAmount = CInt(lsvFoodList.Items(i).SubItems(2).Text)
tmplbltotal = CInt(lsvFoodList.Items(i).SubItems(3).Text)
tmpAmount = CInt(lsvFoodList.Items(i).SubItems(4).Text)
sqlAdd &= "'" & tmpFoodId & "',"
sqlAdd &= "'" & tmpRentDate & "',"
tmpReturnDate = tmpRentDate.AddDays(tmplbltotal)
sqlAdd &= "'" & tmpReturnDate & "',"
sqlAdd &= tmptxtAmount & ","
tmpSum = (tmptxtAmount * tmplblSalePrice)
tmpDiscount = CInt(tmpSum * rRentRateDiscount)
tmpNet = tmpSum - tmpDiscount
sqlAdd &= tmpNet & ","
sqlAdd &= "'0')"
With comAdd
.CommandText = sqlAdd
.ExecuteNonQuery()
End With
|
 |
 |
 |
 |
Date :
2010-02-03 21:40:47 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
นู๋ เขียน Access นะไม่ใช่ SQL นู๋ งง
โค๊ด แบบ SQL มั๊กมากเลย
|
 |
 |
 |
 |
Date :
2010-02-03 21:42:09 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตัวแปรหนูทั้งทั้งแหละ แล้ว access นี่ก็ใช้ sql command เหมือนกัน
|
 |
 |
 |
 |
Date :
2010-02-03 21:44:28 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เปลี่ยนเป็น sqlSale แล้ว ง่ะ
|
 |
 |
 |
 |
Date :
2010-02-03 21:45:11 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ก้อใช่ นู๋ ถึง งง ไง
ถ้า ไม่ งง ก้อ คง ไม่ต้อง มาให้ พี่ นั่ง ปวดหัวอยู่ หรอกค่ะ
|
 |
 |
 |
 |
Date :
2010-02-03 21:46:52 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
งั้นเอาทีละส่วน เอา no.26 ก่อนบอกมาว่า table นั้นมี type บ้าง
ปล. ขออย่าใช้ภาษาแช็ต ผมอ่านแล้วปวดหัวมาก
|
 |
 |
 |
 |
Date :
2010-02-03 21:49:31 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันกลายพันธ์อีหแล้ว ง่ะ
พี่ชาย

|
 |
 |
 |
 |
Date :
2010-02-03 21:50:54 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอโทษ ขอโทษ
พี่ชายอย่าเพิ่ง อารมณ์ เสีย
พี่ใช้ ภาษา พูด ที่ ให้หนู เข้า ใจด้วยซิค่ะ พี่
|
 |
 |
 |
 |
Date :
2010-02-03 21:57:53 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ส่งเมื่อไหร่ล่ะครับ
อยากให้ไปอ่านวิธีการใช้ sql command ก่อนจริงๆ
ศึกษาเรื่องการใชคำสั่ง select insert update delete กับเรื่อง type ด้วย
ทันไหม
|
 |
 |
 |
 |
Date :
2010-02-03 21:58:53 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Integer กับ String และก็ Date
|
 |
 |
 |
 |
Date :
2010-02-03 22:00:39 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อันไหน type อะไรบ้างครับ ช่วยแจงเป็นรายตัวหน่อย
|
 |
 |
 |
 |
Date :
2010-02-03 22:01:53 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ทัน แล้ว ค่ะ
พี่อย่เพิ่ง ประ ชด กัน ได้ ไหม ค่ะ
รู้ แล้ว ค่ะ ว่า .....นั่น แหล่ะ
พี่อย่าเพิ่ง หงุดหงิดซิค่ะ
|
 |
 |
 |
 |
Date :
2010-02-03 22:02:29 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code
[code][/code]Code (VB.NET)
Dim sqlSale As String = ""
AutoGeneratetakeid() 'เรียกใช้ซับบูทีนสำหรับสร้างเลขที่ใบสั่งอาหาร (Or_No) อัตโนมัติ
sqlSale = "INSERT INTO CusOrder (Or_No,Ore_date,Mem_Id,Total_Price,"
sqlSale &= "Persent,Table_No,No_Count)"
sqlSale &= "VALUES('" & LastOr_No & "',"
sqlSale &= "'" & txtMemId.Text & "',"
sqlSale &= "'" & dtpAdmitDate.Value.ToShortDateString & "',"
sqlSale &= "'" & CInt(lbltotal.Text) & "',"
sqlSale &= "'" & CInt(lblDiscount.Text) & "',"
sqlSale &= "'" & cboTable.Text & "',"
sqlSale &= "'" & CInt(lblSumBeforeDiscount.Text) & "')"
งั้น พี่ไปนอน ก็ได้ ค่ะ
หนูไม่ลบกวน ก็ได้
|
 |
 |
 |
 |
Date :
2010-02-03 22:04:35 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมง่วงจริงๆ ไม่ได้ประชด กลางวันทำงานซะแบ็ตหมดไปแล้ว พิมพ์ผิดๆ ถูกๆ แล้วเนี่ย
|
 |
 |
 |
 |
Date :
2010-02-03 22:05:08 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
งั้น ก้อไปนอน เถอะค่ะ
พักผ่อน สมอง เตรียมตัว ทำงาน
ฝัน ดีนะค่ะ 
|
 |
 |
 |
 |
Date :
2010-02-03 22:08:01 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอาอันนี้ให้จบๆ ก่อน สักอันจะได้มีกำลังใจทำต่อ
ใส่ type มาให้ซะดีๆ
[Or_No] = type อะไร
[Ore_date] = type อะไร
[Mem_Id] = type อะไร
[Total_Price] = type อะไร
[Persent] = type อะไร
[Table_No] = type อะไร
[No_Count] = type อะไร
|
 |
 |
 |
 |
Date :
2010-02-03 22:08:52 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
[Or_No] = type อะไร Text
[Ore_date] = type อะไร Date/Time
[Mem_Id] = type อะไร Text
[Total_Price] = type อะไร Text
[Persent] = type อะไร Text
[Table_No] = type อะไร Text
[No_Count] = type อะไร AutoNumber
|
 |
 |
 |
 |
Date :
2010-02-03 22:15:39 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ตามนี้
Code (VB.NET)
'บันทึกลงส่วน ของ CusOder
'sqlAdd = "INSERT INTO Cus0der (Or_No,Ore_date,Mem_Id,Total_Price,Persent,Table_No,No_Count) " <-- อันนี้น่าสงสัยทำไมชื่อ table มันชื่อ Cus0der เลขศูนย์นะไม่ใช่ตัวโอ
'sqlAdd &= " VALUES('" & LastTransID = "" & "',"
'sqlAdd &= "'" & dtpAdmitDate.Value.ToShortDateString & "',"
'sqlAdd &= "'" & txtMemId.Text & "',"
'sqlAdd &= "'" & lbltotal.Text & "',"
'sqlAdd &= "'" & lblDiscount.Text & "',"
'sqlAdd &= "'" & cboTable.Visible & "',"
'sqlAdd &= "'" & lblSumBeforeDiscount.Text & ")"
'sqlAdd &= "0,'0')"
'With comAdd
'.CommandType = CommandType.Text
'.CommandText = sqlAdd
'.Connection = Conn
'MessageBox.Show(comAdd.CommandText.ToString())
'comAdd.ExecuteNonQuery()
'End With
Dim sqlAdd As String = "Insert Into [Cus0der] ([Or_No], [Ore_date], [Mem_Id], [Total_Price], [Persent], [Table_No]) " & _
"Values (" & _
"@Or_No, @Ore_date, @Mem_Id, @Total_Price, @Persent, @Table_No" & _
")"
Dim comAdd As OleDbCommand = New OleDbCommand(sqlAdd, Conn)
comAdd.Parameters.Add("@Or_No", OleDbType.VarChar).Value = LastTransID
comAdd.Parameters.Add("@Ore_date", OleDbType.Date).Value = dtpAdmitDate.Value 'DatePicker เป็น Date อยู่แล้วไม่ต้อง Convert
comAdd.Parameters.Add("@Mem_Id", OleDbType.VarChar).Value = txtMemId.Text
comAdd.Parameters.Add("@Total_Price", OleDbType.VarChar).Value = lbltotal.Text
comAdd.Parameters.Add("@Persent", OleDbType.VarChar).Value = lblDiscount.Text
comAdd.Parameters.Add("@Table_No", OleDbType.VarChar).Value = cboTable.Text
'comAdd.Parameters.Add("@No_Count", OleDbType.VarChar).Value = CDbl(lblSumBeforeDiscount.Text) AutoNumber ไม่ต้อง Insert มันจะเติมให้เอง
comAdd.ExecuteNonQuery()
|
 |
 |
 |
 |
Date :
2010-02-03 22:21:04 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หลักๆ ก็คงต้องคำนึงถึง type ที่จะเก็บต้องป้อนให้ตรงกัน
ดูที่ทำให้เป็นตัวอย่างนะ คือ
เขียน command ก่อน อันไหนต้องแทนค่าให้นำหน้าด้วย @
แล้วสร้าง OleDbCommand จะนั้นก็แทนค่า (ดู type ให้ตรงกับใน access ด้วย)
แค่นี้ก็เรียบร้อย ไม่เห็นยากเลย ใจเย็นๆ ปวดหัวก็ไปนอนพักให้เต็มที่ พรุ่งนี้จะได้ลุยต่อ
ปล. วันนี้เซียนๆ ไปไหนกันหมดไม่มีใครอยู่เลยหรือ
สำหรับวันนี้สวัสดี
|
 |
 |
 |
 |
Date :
2010-02-03 22:26:51 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พอSave มัน ขึ้น ข้อผิดพลาดว่า
Conversion from string "แกงไก่"to type'Integer'is not valid. แบบนี้
ไม่มีกำลัง ใจทำเลย พอแก้ อัน โน้นได้ ก้อมี อันใหม่ มาให้ คิด
|
 |
 |
 |
 |
Date :
2010-02-03 22:28:10 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หนักเลย ทีนี้

|
 |
 |
 |
 |
Date :
2010-02-03 22:33:46 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Save แล้ว แต่ไม่ลงฐาน ข้อมูล
เซ็งจิง ๆ
|
 |
 |
 |
 |
Date :
2010-02-03 23:16:00 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอโทษนะคับ ทำแบบ windowsapplication รึป่าวคับ
|
 |
 |
 |
 |
Date :
2010-02-03 23:47:30 |
By :
ปั้น |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตรวจสอบ Type ของ Access กับ OleDb ให้ตรงกัน
Access : OleDb
Text = VarChar
Memo = VarChar
Number = Integer
Date/Time = Date/Time
Currency = Double
AutoNumber = Integer
Yes/No = Boolean
Object Ole = Any Type
HyperLink = VarChar
ต้องให้ตรงกันนะ
------------------------------------------------------
เกี่ยวกับการติดต่อ Access
1. สร้าง Connection กับ Access (ทำครั้งเดียวพอ จะใช้ค่อยเปิด ไม่ต้องเปิดตลอด)
2. สร้าง Command โดยใช้คำสั่งของ sql
- select (เรียกดูข้อมูล) ถ้าใช้ DataAdapter ไม่ต้องเปิด Connection (ไม่ต้องใช้คำสั่งนี้ Connection.Open()) แต่ถ้าใช้ Reader ต้องเปิด execute อย่าลืมปิดด้วย
- Insert (เพิ่มระเบียน) เวลา execute คำสั่งต้องเปิด Connection และ execute เสร็จให้ปิดเลย ข้อมูล Type AutoNumber ไม่ต้องป้อนให้ มันจะเพิ่มเองอัตโนมัติ
- Update (แก้ไขระเบียน) เวลา execute คำสั่งต้องเปิด Connection และ execute เสร็จให้ปิดเลย ข้อมูล Type AutoNumber ไม่สามารถแก้ไขได้ ไม่ต้องป้อนให้มันนะ
- Delete (ลบระเบียน) เวลา execute คำสั่งต้องเปิด Connection และ execute เสร็จให้ปิดเลย
เห็นไหมง่ายนิดเดียว มีแค่สร้าง connection กับส่ง command ไป execute แค่นี้เอง
ตัวอย่างการสร้าง Connection (ควรประกาศเป็น Global นะ จะได้ไม่ต้องเขียนซ้ำอีก)
Private AccessConnection As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\AccessDatabase.mdb")
ตัวอย่างการสร้าง Insert Command
Dim AccessCommandString As String = "Insert Into [MyTable] ([ID], [Data]) Values (@ID, @Data)"
Dim AccessCommand As OleDbCommand = New OleDbCommand(AccessCommandString, AccessConnection)
'ป้อน parameter ให้ command
AccessCommand.ParaMeters.Add("@ID", OleDbType.Integer).Value = CInt(txtID.Text)
AccessCommand.ParaMeters.Add("@Data", OleDbType.VarChar).Value = txtData.Text
ตัวอย่างการ Execute Command
AccessConnection.Open()
AccessCommand.ExecuteNonQuery()
AccessConnection.Close()
|
 |
 |
 |
 |
Date :
2010-02-04 10:54:02 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สุดยอดครับพี่ tungman 
ส่วนเจ้าของกระทู้ก็สู้ๆนะครับ 
สำคัญๆเลยคือ อย่า Copy Code นะครับ ใช้พิมพ์เองเอา เราจะเข้าใจมากขึ้น
เเละเวลาทำเอาทีละส่วนให้ใช้งานได้ เช่น ถ้าทำ Insert ก็ให้มันเพิ่มลง DB ให้ได้ก่อน เวลาเกิด Error เราจะได้ไปเเก้ไดถูกที่ครับ
ปล. ผมไม่ได้เก่งอะไรนะครับ นักศึกษา เหมือนกัน ทำโปรเจคจบเหมือนกัน ไม่มีใครเก่งตั้งเเต่เเรกหรอกครับ สู้ๆ Fight !!!
|
 |
 |
 |
 |
Date :
2010-02-04 11:56:06 |
By :
artcode |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ชาย
ไม่ติดตรงนั้นแล้ว
แต่กด Save แล้ว มันไม่ลงฐาน อ่ะค่ะ
|
 |
 |
 |
 |
Date :
2010-02-04 13:40:23 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code
[code][/code]Code (VB.NET)
Option Explicit On
Option Strict On
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports System.Drawing.Printing
Public Class frmSale
Dim Conn As New OleDbConnection(strConn)
Dim connect As New OleDbConnection
Dim da As New OleDbDataAdapter
Dim ds As DataSet = New DataSet
Dim dt As DataTable
Dim tr As SqlTransaction
Dim bs As BindingSource = New BindingSource()
Dim commandUnit As SqlCommand
Dim UseFont As New Font("MS Sans Serif", 10)
Dim prDoc As New PrintDocument
Private prDlg As PrintDialog = New PrintDialog
Dim tmpSumCommission As Double = 0
Dim tmptxtMemId As String = ""
Dim tmptakeid As String = ""
'Dim dtfInfo As DateTimeFormatInfo
Dim tmpNetMeReceived As Single = 0
Dim LastSaleID As String = ""
Dim IsFind As Boolean = False
Dim IsFindMember As Boolean = False
Dim IsFindFood As Boolean = False
Dim ToClose As Boolean = False
Private Sub frmSale_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.WindowState = FormWindowState.Maximized
Conn = New OleDbConnection(strConn)
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
With cboTable
.Items.Add("")
'.Items.Add("")
'.Items.Add("")
.SelectedIndex = 0
End With
AutoGeneratetakeid() 'รหัสรันออโต้
lblOrno.Text = tmptakeid
AutoGeneratePayId()
lblPayNo.Text = tmptakeid
lsvFoodList.Columns.Add("รหัสอาหาร", 82, HorizontalAlignment.Center)
lsvFoodList.Columns.Add("รายการอาหาร", 180, HorizontalAlignment.Left)
lsvFoodList.Columns.Add("ราคา/หน่วย", 82, HorizontalAlignment.Center)
lsvFoodList.Columns.Add("จำนวนที่สั่ง", 90, HorizontalAlignment.Center)
lsvFoodList.Columns.Add("รวมเป็นเงิน", 100, HorizontalAlignment.Center)
lsvFoodList.View = View.Details
lsvFoodList.GridLines = True
txtAmount.Text = "1"
lblSalePrice.Text = "0"
lbltotal.Text = "0"
lblSumBeforeDiscount.Text = "0"
lblDiscount.Text = "0"
lblNet.Text = "0"
AddHandler prDoc.PrintPage, New PrintPageEventHandler(AddressOf Me.StringToPrint_Print)
prDoc.DocumentName = "ใบเสร็จรับเงิน"
prDlg.Document = prDoc
txtMemId.Focus()
End Sub
Private Sub txtMemId_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtMemId.KeyDown
If txtMemId.Text <> "" Then
If (e.KeyCode = Keys.Enter) Then
Dim sqlMember As String = ""
sqlMember = "SELECT Mem_id, Mem_Name, MemId_Card, Mem_Sex, Mem_Add, Mem_Phone"
sqlMember &= " FROM Member"
sqlMember &= " WHERE (Mem_id='" & txtMemId.Text & "')"
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
If IsFindMember = True Then
ds.Tables("Member").Clear()
End If
da = New OleDbDataAdapter(sqlMember, Conn)
da.Fill(ds, "Member")
If ds.Tables("Member").Rows.Count <> 0 Then
IsFind = True
txtMemId.Text = CStr(ds.Tables("Member").Rows(0).Item("Mem_Id"))
txtMemName.Text = CStr(ds.Tables("Member").Rows(0).Item("Mem_Name"))
txtMemAdd.Text = CStr(ds.Tables("Member").Rows(0).Item("Mem_Add"))
txtidcard.Text = CStr(ds.Tables("Member").Rows(0).Item("MemId_Card"))
txtphone.Text = CStr(ds.Tables("Member").Rows(0).Item("Mem_Phone"))
'rIsMember = CStr(ds.Tables("Member").Rows(0).Item("IsMember"))
ClearAllMemberData()
lsvFoodList.Items.Clear()
txtFoodId.Focus()
Else
IsFindMember = False
MessageBox.Show("รายชื่อสมาชิกที่คุณระบุ ไม่มี !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
rMem_Id = ""
rMem_Name = ""
rMemId_Card = ""
rMem_Sex = ""
rMem_Add = ""
rMem_Phone = ""
rDateRegis = "0"
'rIsMember = "1"
txtMemId.Focus()
txtMemId.SelectAll()
End If
End If
End If
End Sub
Private Sub AutoGeneratetakeid() 'รันเลขที่ใบสั่ง
Dim sqlTmp As String = ""
Dim comTmp As OleDbCommand = New OleDbCommand
Dim Tmp As OleDbDataReader
sqlTmp = "SELECT TOP 1 Or_No FROM Sale ORDER BY Or_No DESC"
Conn = New OleDbConnection(strConn)
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
Try
With comTmp
.CommandType = CommandType.Text
.CommandText = sqlTmp
.Connection = Conn
Tmp = .ExecuteReader()
Tmp.Read()
tmptakeid = CStr(Tmp.Item("Or_No"))
tmptakeid = (CInt(tmptakeid) + 1).ToString("00000")
End With
Catch
tmptakeid = "00001"
End Try
'Tmp.Close()
End Sub
Private Sub AutoGeneratePayId() 'รันเลขที่ใบเสร็จ
Dim sqlTmp As String = ""
Dim comTmp As OleDbCommand = New OleDbCommand
Dim Tmp As OleDbDataReader
sqlTmp = "SELECT TOP 1 Pay_No FROM Pay ORDER BY Pay_No DESC"
Conn = New OleDbConnection(strConn)
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
Try
With comTmp
.CommandType = CommandType.Text
.CommandText = sqlTmp
.Connection = Conn
Tmp = .ExecuteReader()
Tmp.Read()
tmptakeid = CStr(Tmp.Item("Pay_No"))
tmptakeid = (CInt(tmptakeid) + 1).ToString("00000")
End With
Catch
tmptakeid = "00001"
End Try
'Tmp.Close()
End Sub
Private Sub btnShowMemberList_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowMemberList.Click
Dim fAllMember As New frmMemberList
fAllMember.ShowDialog(Me)
txtMemId.Text = rMem_Id
txtMemName.Text = rMem_Name
txtidcard.Text = rMemId_Card
If rMem_Sex = "ชาย" Then
OptMale.Checked = True
ElseIf rMem_Sex = "หญิง" Then
OptFemale.Checked = True
End If
txtMemAdd.Text = rMem_Add
txtphone.Text = rMem_Phone
txtMemId.Enabled = True
chkNotMember.Checked = False
rMem_Id = ""
rMem_Name = ""
rMemId_Card = ""
rMem_Sex = "0"
rMem_Add = ""
rMem_Phone = ""
rDateRegis = ""
txtFoodId.Focus()
End Sub
Private Sub chkNotMember_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkNotMember.CheckedChanged
If chkNotMember.Checked = True Then
ClearAllMemberData()
AutoGenerateMemberID()
txtMemId.Enabled = False
'txtidcard.Enabled = False
btnShowMemberList.Enabled = False
txtMemName.Text = ""
txtidcard.Text = ""
txtMemAdd.Text = ""
txtphone.Text = ""
rMem_Id = ""
rMem_Name = ""
rMemId_Card = ""
rMem_Sex = "0"
rMem_Add = ""
rMem_Phone = ""
rIsMember = "1"
txtMemName.Focus()
ElseIf chkNotMember.Checked = False Then
txtMemId.Text = ""
txtMemId.Enabled = True
txtMemId.Focus()
txtMemName.Text = ""
btnShowMemberList.Enabled = True
End If
ClearAllFoodData()
lsvFoodList.Items.Clear()
lblSumBeforeDiscount.Text = "0"
lblDiscount.Text = "0"
lblNet.Text = "0"
'txtFoodId.Focus()
End Sub
Private Sub AutoGenerateMemberID()
Dim sqlTmp As String = ""
Dim comTmp As OleDbCommand = New OleDbCommand
Dim Tmp As OleDbDataReader
Dim tmpMemberID As Integer = 0
sqlTmp = "SELECT TOP 1 Mem_Id FROM Member ORDER BY Mem_Id DESC"
Conn = New OleDbConnection(strConn)
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
Try
With comTmp
.CommandType = CommandType.Text
.CommandText = sqlTmp
.Connection = Conn
Tmp = .ExecuteReader()
Tmp.Read()
tmpMemberID = CInt(CStr((Tmp.Item("Mem_Id"))))
tmpMemberID = tmpMemberID + 1
txtMemId.Text = tmpMemberID.ToString("0000")
End With
Catch
tmptxtMemId = "0001"
End Try
End Sub
Private Sub ClearAllMemberData()
txtMemId.Text = ""
txtMemName.Text = ""
'cbot.SelectedIndex = 0
OptMale.Checked = True
txtidcard.Text = ""
txtphone.Text = ""
txtMemAdd.Text = ""
End Sub
Private Sub ClearAllFoodData()
txtFoodId.Text = ""
lblTitle.Text = ""
txtAmount.Text = "1"
lblSalePrice.Text = ""
lbltotal.Text = "0"
End Sub
Private Sub btnShowOrderList_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowOrderList.Click
If txtMemId.Text = "" Then
MessageBox.Show("กรุณาป้อนข้อมูลลูกค้าก่อน !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtMemId.Focus()
Exit Sub
End If
Dim fAllFood As New frmOrderFoodList
fAllFood.ShowDialog(Me)
txtFoodId.Text = rFood_Id
lblTitle.Text = rFood_Name
lblSalePrice.Text = rPrice
lbltotal.Text = rFoodCost.ToString()
rFood_Id = ""
rFood_Name = ""
rPrice = ""
rFoodCost = 0
Select Case rIsMember
Case "0"
lbltotal.Text = CStr(rtxtAmount + rPrice)
lbltotal.Text = rTotal.ToString()
End Select
txtAmount.Focus()
End Sub
Private Sub ClearAllData()
txtFoodId.Text = ""
lblTitle.Text = ""
lblSalePrice.Text = ""
txtAmount.Text = "1"
lbltotal.Text = "0"
lblSumBeforeDiscount.Text = "0"
lblDiscount.Text = "0"
lblNet.Text = "0"
End Sub
Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
lsvFoodList.Items.Clear()
ClearAllFoodData()
lbltotal.Text = "0"
lblSumBeforeDiscount.Text = "0"
lblDiscount.Text = "0"
lblNet.Text = "0"
txtFoodId.Focus()
End Sub
Private Sub txtFoodId_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtFoodId.KeyDown
If txtFoodId.Text <> "" Then
If (e.KeyCode = Keys.Enter) Then
If txtFoodId.Text = "" Then
MessageBox.Show("กรุณาป้อนข้อมูลลูกค้าก่อน !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtFoodId.Focus()
Exit Sub
End If
Dim sqlFood As String = ""
sqlFood = "SELECT Food.Food_Id,Food.Food_Name,Food.price,Sale.totle"
sqlFood &= " FROM Food, Sale"
sqlFood &= " WHERE (Food.Food_Id = Sale.Food_Id)"
sqlFood &= " AND (Food.Food_Id='" & txtFoodId.Text & "')"
'sqlFood = "SELECT Food_Id,Food_Name,price "
'sqlFood &= " FROM Food"
'sqlFood &= " WHERE (Food_Id='" & txtFoodId.Text & "')"
If IsFindFood = True Then
ds.Tables("Food").Clear()
End If
da.SelectCommand.CommandText = sqlFood
da.Fill(ds, "Food")
Dim AllDateRent As Integer = 0
If ds.Tables("Food").Rows.Count <> 0 Then
IsFindFood = True
txtFoodId.Text = CStr(ds.Tables("Food").Rows(0).Item("Food_Id"))
lblTitle.Text = CStr(ds.Tables("Food").Rows(0).Item("Food_Name"))
lblSalePrice.Text = CStr(ds.Tables("Food").Rows(0).Item("Price"))
lbltotal.Text = CStr(ds.Tables("Sale").Rows(0).Item("Total"))
txtAmount.Focus()
txtAmount.SelectAll()
Else
IsFindFood = False
MessageBox.Show("ไม่พบรหัสอาหารตามที่คุณระบุ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
ClearAllFoodData()
txtFoodId.Focus()
txtFoodId.SelectAll()
End If
End If
End If
End Sub
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
If (txtFoodId.Text = "") Or (lblTitle.Text = "") Or (lblSalePrice.Text = "") Or (txtAmount.Text = "") Or (lbltotal.Text = "") Then
txtFoodId.Focus()
Exit Sub
End If
Dim i As Integer = 0
Dim tmpFoodId As String = ""
For i = 0 To lsvFoodList.Items.Count - 1
tmpFoodId = lsvFoodList.Items(i).SubItems(0).Text
If txtFoodId.Text = tmpFoodId Then
MessageBox.Show("คุณเลือกรหัสอาหารซ้ำกัน !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtFoodId.Text = ""
lblTitle.Text = ""
lblSalePrice.Text = ""
txtAmount.Text = "1"
lbltotal.Text = "0"
txtFoodId.Focus()
txtFoodId.SelectAll()
Exit Sub
End If
Next
Dim FoodTotal As Integer = 0
Dim lvi As ListViewItem
FoodTotal = CInt(lblSalePrice.Text) * CInt(txtAmount.Text)
Dim anyData() As String
anyData = New String() { _
txtFoodId.Text, _
lblTitle.Text, _
lblSalePrice.Text, _
txtAmount.Text, _
FoodTotal.ToString("#,##0") _
}
lvi = New ListViewItem(anyData)
lsvFoodList.Items.Add(lvi)
CalculateRent()
ClearAllFoodData()
txtFoodId.Focus()
End Sub
Private Sub lsvFoodList_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lsvFoodList.DoubleClick
Dim i As Integer = 0
For i = 0 To lsvFoodList.SelectedItems.Count - 1
Dim lvi As ListViewItem
lvi = lsvFoodList.SelectedItems(i)
lsvFoodList.Items.Remove(lvi)
Next
CalculateRent()
End Sub
Sub CalculateRent()
Dim i As Integer = 0
Dim tmplblSalePrice As Integer = 0 'ราคา
Dim tmptxtAmount As Integer = 0 'จำนวนที่ขาย
Dim tmplbltotal As Integer = 0 'รวมเป็นเเงิน
Dim tmpSum As Integer = 0 'ผลรวม
Dim tmpDiscount As Integer = 0 'ส้วนลด กรณีเป็นลูกค้า
Dim tmpNet As Integer = 0 'ยอดที่ต้องจ่าย
If rIsMember = "1" Then
rRentRateDiscount = 0
End If
For i = 0 To lsvFoodList.Items.Count - 1
tmptxtAmount = CInt(lsvFoodList.Items(i).SubItems(2).Text)
tmplblSalePrice = CInt(lsvFoodList.Items(i).SubItems(3).Text)
tmplbltotal = CInt(lsvFoodList.Items(i).SubItems(4).Text)
tmpSum = tmpSum + (tmptxtAmount * tmplblSalePrice)
tmpDiscount = tmpDiscount + CInt((tmptxtAmount * tmplblSalePrice) * rRentRateDiscount)
tmpNet = tmpSum - tmpDiscount
Next
lblSumBeforeDiscount.Text = tmpSum.ToString("#,##0.00")
lblDiscount.Text = tmpDiscount.ToString("#,##0.00")
lblNet.Text = tmpNet.ToString("#,##0.00")
End Sub
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
If txtMemId.Text = "" Then
MessageBox.Show("กรุณาระบุรหัสลูกค้าด้วยค่ะ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtMemId.Focus()
Exit Sub
End If
If chkNotMember.Checked = True Then
If txtMemName.Text = "" Then
MessageBox.Show("กรุณาระบุชื่อลูกค้าด้วยค่ะ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtMemName.Focus()
Exit Sub
End If
End If
AutoGeneratetakeid() 'เรียกใช้ซับบูทีนสำหรับสร้างเลขที่ใบสั่งอาหาร (Or_No) อัตโนมัติ
AutoGeneratePayId()
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
Dim sqlAdd As String = ""
Dim comAdd As OleDbCommand = New OleDbCommand
Try
If MessageBox.Show("คุณต้องการบันทึกรายการอาหารที่สั่ง ใช่หรือไม่?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
'INTERT ข้อมูลในตาราง CusOder
Dim sqlSale As String
sqlSale = "Insert Into [CusOrder] ([Or_No], [Ore_date], [Mem_Id], [Total_Price], [Persent], [Table_No]) " & _
"Values (" & _
"@Or_No, @Ore_date, @Mem_Id, @Total_Price, @Persent, @Table_No" & _
")"
comAdd.Parameters.Add("@Or_No", OleDbType.VarChar).Value = LastSaleID
comAdd.Parameters.Add("@Ore_date", OleDbType.Date).Value = dtpAdmitDate.Value 'DatePicker เป็น Date อยู่แล้วไม่ต้อง Convert
comAdd.Parameters.Add("@Mem_Id", OleDbType.VarChar).Value = txtMemId.Text
comAdd.Parameters.Add("@Total_Price", OleDbType.VarChar).Value = lbltotal.Text
comAdd.Parameters.Add("@Persent", OleDbType.VarChar).Value = lblDiscount.Text
comAdd.Parameters.Add("@Table_No", OleDbType.VarChar).Value = cboTable.Text
'comAdd.Parameters.Add("@No_Count", OleDbType.VarChar).Value = CDbl(lblSumBeforeDiscount.Text) AutoNumber ไม่ต้อง Insert มันจะเติมให้เอง
'comAdd.ExecuteNonQuery()
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
'INTERT ข้อมูลในตาราง Sale
Dim i As Integer = 0
Dim tmpFoodId As String = ""
'Dim sqlFood As String = ""
Dim tmptxtAmount As Integer = 0
Dim tmplbltotal As Integer = 0
Dim tmpAmount As Integer = 0
Dim tmplblSalePrice As Integer = 0
Dim tmpSum As Integer = 0
Dim tmpDiscount As Integer = 0
Dim tmpNet As Integer = 0
Dim tmpRentDate As Date
Dim tmpReturnDate As Date
tmpRentDate = Date.Now
If rIsMember = "1" Then
rRentRateDiscount = 0
End If
Dim sqlFood As String
sqlFood = "Insert Into [Sale] ([Or_No], [Food_Id], [Unit_Price], [Amount], [Total]" & _
"Values (" & _
"@Or_No, @Food_Id, @Unit_Price, @Amount," & _
")"
'Dim comFoos As OleDbCommand = New OleDbCommand(sqlSale, Conn)
comAdd.Parameters.Add("@Or_No", OleDbType.VarChar).Value = LastSaleID
'comAdd.Parameters.Add("@Ore_date", OleDbType.Date).Value = dtpAdmitDate.Value 'DatePicker เป็น Date อยู่แล้วไม่ต้อง Convert
comAdd.Parameters.Add("@Food_Id", OleDbType.VarChar).Value = txtFoodId.Text
comAdd.Parameters.Add("@Unit_Price", OleDbType.Integer).Value = lblSalePrice.Text
comAdd.Parameters.Add("@Amount", OleDbType.Integer).Value = txtAmount.Text
comAdd.Parameters.Add("@Total", OleDbType.VarChar).Value = lbltotal.Text
'comAdd.Parameters.Add("@No_Count", Integer.VarChar).Value = CDbl(lblSumBeforeDiscount.Text) AutoNumber ไม่ต้อง Insert มันจะเติมให้เอง
For i = 0 To lsvFoodList.Items.Count - 1
tmpFoodId = (lsvFoodList.Items(i).SubItems(0).Text)
tmplblSalePrice = CInt(lsvFoodList.Items(i).SubItems(2).Text)
tmptxtAmount = CInt(lsvFoodList.Items(i).SubItems(3).Text)
tmplbltotal = CInt(lsvFoodList.Items(i).SubItems(4).Text)
'tmpSum = tmpAmount + (tmplblSalePrice * tmpAmount)
sqlSale &= "'," & tmpFoodId & "',"
sqlSale &= "'," & tmplblSalePrice & "',"
tmpReturnDate = tmpRentDate.AddDays(tmplbltotal)
tmpSum = (tmptxtAmount * tmplblSalePrice)
tmpDiscount = CInt(tmpSum * rRentRateDiscount)
tmpNet = tmpSum - tmpDiscount
sqlSale &= tmpNet & ","
sqlSale &= "'0')"
'INTERT ข้อมูลในตาราง Pay
Dim sqlPay As String
sqlPay = "Insert Into [Pay] (Pay_No], [Pay_Date], [Or_No]" & _
"Values (" & _
"@Pay_No, @FPay_Date, @Or_No," & _
")"
'Dim comFoos As OleDbCommand = New OleDbCommand(sqlSale, Conn)
comAdd.Parameters.Add("@Pay_No", OleDbType.VarChar).Value = tmptakeid
comAdd.Parameters.Add("@Pay_Date", OleDbType.Date).Value = dtpAdmitDate.Value 'DatePicker เป็น Date อยู่แล้วไม่ต้อง Convert
comAdd.Parameters.Add("@Or_No", OleDbType.Integer).Value = lblPayNo.Text
comAdd.Parameters.Add("@Total_Pay", OleDbType.Integer).Value = lblNet.Text
Next
If chkNotMember.Checked = True Then
Dim sqlMem As String = ""
Dim comMember As OleDbCommand = New OleDbCommand
sqlMem = "INSERT INTO Member (Mem_ID,Mem_Name,MemId_Card,"
sqlMem &= " Mem_Sex,Mem_Add,Mem_Phone,DateRegis,IsMembe)"
sqlMem &= " VALUES ('" & txtMemId.Text & "',"
sqlMem &= "'" & txtMemName.Text & "',"
sqlMem &= "'" & txtidcard.Text & "',"
If OptMale.Checked = True Then
sqlMem &= "'=ชาย',"
ElseIf OptFemale.Checked = True Then
sqlMem &= "'หญิง',"
End If
sqlMem &= "'" & txtMemAdd.Text & "',"
sqlMem &= "'" & txtphone.Text & "',"
sqlMem &= "'" & tmpRentDate & "',"
sqlMem &= "'', '1','0')"
With comMember
.CommandType = CommandType.Text
.CommandText = sqlMem
.Connection = Conn
'.ExecuteNonQuery()
End With
End If
MessageBox.Show("บันทึกรายการสั่งอาหารเรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
If IsInstallPrinter() = True Then
If prDlg.ShowDialog = Windows.Forms.DialogResult.OK Then
prDoc.Print()
End If
Else
MessageBox.Show("กรุณาติดตั้งเครื่อง Printer ก่อนสั่งพิมพ์เอกสาร", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
ClearAllMemberData()
ClearAllFoodData()
lsvFoodList.Items.Clear()
lblSumBeforeDiscount.Text = "0"
lblDiscount.Text = "0"
lblNet.Text = "0"
chkNotMember.Checked = False
'cboMemberType.SelectedIndex = 0
txtMemId.Enabled = True
txtMemId.Focus()
End If
Catch ErrProcess As Exception
MessageBox.Show("ไม่สามารถบันทึกรายการสั่งอาหารได้ เนื่องจาก " & ErrProcess.Message, "ข้อผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Exit Sub
tr.Commit()
End Try
End Sub
Private Function IsInstallPrinter() As Boolean
IsInstallPrinter = False
If prDoc.PrinterSettings.PrinterName = "<no default printer>" Then
IsInstallPrinter = False
Else
IsInstallPrinter = True
End If
End Function
Private Sub StringToPrint_Print(ByVal sender As Object, ByVal e As PrintPageEventArgs)
End Sub
Private Sub AnyString(ByVal g As Graphics, ByVal printString As String, ByVal xPos As Integer, ByVal yPos As Integer)
End Sub
End Class
Save แล้ว ไม่ลงฐาน ทำผิดอีกแล้วมั้ง
|
 |
 |
 |
 |
Date :
2010-02-04 17:35:24 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คุณ Tungman ช่วยได้เยอะค่ะ
คือกวางก็ทำโปรเจคจบเหมือนกัน เช่นเดียวกับ คุณ artCode ก็จริง ๆ เป็นเพื่อนในคณะเดียวกันนี่แหละค่ะ
พอดี คุณ artCode บอกว่า ที่นี่ใจดี เพราะตอนแรกกวางไม่กล้าโพสถามที่นี่ซักเท่าไหร่...แต่เมื่อลองถามดู...ปรากฏว่า
สุดยอดค่ะ โปรเจคผ่านจุดที่ติดมาตลอดเพราะ คุณ Tungman นี่แหละ ต้องขอขอบคุณอีกครั้งนะคะ ขอบคุณมาก ๆ ด้วย
แล้วถามที่อ่านมา เจ้าของกระทู้ ลอง debug ดูนะคะ อักษรเพียงแค่ตัวเดียว หรือตำแหน่งคำสั่งผิดแค่บรรทัดเดียว มันอาจจะทำให้โปรแกรม error อยู่อย่างนั้น แก้ไม่ได้แน่นอน ลองพยายามจัดลำดับสิ่งที่ต้องทำให้ใน หน้า app นั้น
รวมถึงการ copy code มาถาม กวางว่า เอาเฉพาะส่วนที่มีปัญหาดีกว่า เช่น ถ้ามีปัญหาเรื่องการ save ก็เอาส่วนที่เกี่ยวกับการ save มาถามพี่ ๆ เค้า เนื่องจากมันจะดูง่ายกว่า copy มาทั้ง form นะคะ
อันนี้แนะนำนะคะ เพราะตัวกวางเองก็ไม่ได้เก่งอะไร แต่อยากช่วย พอมาลองไล่อ่าน Code ของคุณดู...ไม่ไหวค่ะ ลายตามาก ๆ อันนี้แนะนำเพื่อให้พี่ ๆ เค้าได้ช่วยแบบสบายตา
เรื่องแก้ปัญหานี้ได้ แล้วไปเจอปัญหาต่อไปมีทุกคนค่ะ กวางยังเป็น เจอจนปวดหัว เครียด ร้องไห้ แต่ต้องลองพยายามด้วยตัวเองอีกสักครั้ง...สู้ ๆ อย่าท้อค่ะ เพราะกวาง Coding เสร็จแล้วใช้เวลา 1 เดือน แต่ก็มีปัญหาต้องรื้อทำใหม่ในบางส่วน ท้อค่ะ แต่ไม่ถอย เครียดบ้างอะไรบ้าง...
ป.ล.คุณเจ้าของกระทู้...ยังไงให้เกียรติพี่ ๆ เค้านิดนึง...พี่เค้าใจดีนะคะ งานก็ต้องทำ แล้วยังมาช่วยพวกเราอีก เพราะกวางอ่านบางประโยคแล้ว...ดูไม่เหมาะเท่าไหร่อะคะ หวังว่าไม่โกรธกันน้า เพราะเรายังต้องขอความช่วยเหลือพี่ ๆ ที่นี่อีก จริงมั้ยค่ะ ใจเย็น ๆ เน้อ สู้ ๆ
|
 |
 |
 |
 |
Date :
2010-02-04 18:22:31 |
By :
Kwang196 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณ ค่ะ
แต่ เรื่อง ก้อ ขอบคุณ ทุก ๆ คน นั่น แหล่ะค่ะ
แต่ เรื่อง ที่ ใช้คำพุด อ่ะค่ะ ก้อ เป็นคน พุด เป็น แต่ แบบนี้ ตรงเกิน ไป หรือ ไม่ดียังๆง ก็ขอโทษ แล้ว กัน นะค่ะ
Code
[code][/code]Code (VB.NET)
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
If txtMemId.Text = "" Then
MessageBox.Show("กรุณาระบุรหัสลูกค้าด้วยค่ะ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtMemId.Focus()
Exit Sub
End If
If chkNotMember.Checked = True Then
If txtMemName.Text = "" Then
MessageBox.Show("กรุณาระบุชื่อลูกค้าด้วยค่ะ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtMemName.Focus()
Exit Sub
End If
End If
AutoGeneratetakeid() 'เรียกใช้ซับบูทีนสำหรับสร้างเลขที่ใบสั่งอาหาร (Or_No) อัตโนมัติ
AutoGeneratePayId()
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
Dim sqlAdd As String = ""
Dim comAdd As OleDbCommand = New OleDbCommand
Dim cmdAdd As OleDbCommand = New OleDbCommand
'Dim AccessCommand As OleDbDataReader
Try
If MessageBox.Show("คุณต้องการบันทึกรายการอาหารที่สั่ง ใช่หรือไม่?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
'INTERT ข้อมูลในตาราง CusOder
Dim sqlSale As String
sqlSale = "Insert Into [CusOrder] ([Or_No], [Ore_date], [Mem_Id], [Total_Price], [Persent], [Table_No]) " & _
"Values (" & _
"@Or_No, @Ore_date, @Mem_Id, @Total_Price, @Persent, @Table_No" & _
")"
comAdd.Parameters.Add("@Or_No", OleDbType.VarChar).Value = LastSaleID
comAdd.Parameters.Add("@Ore_date", OleDbType.Date).Value = dtpAdmitDate.Value 'DatePicker เป็น Date อยู่แล้วไม่ต้อง Convert
comAdd.Parameters.Add("@Mem_Id", OleDbType.VarChar).Value = txtMemId.Text
comAdd.Parameters.Add("@Total_Price", OleDbType.VarChar).Value = lbltotal.Text
comAdd.Parameters.Add("@Persent", OleDbType.VarChar).Value = lblDiscount.Text
comAdd.Parameters.Add("@Table_No", OleDbType.VarChar).Value = cboTable.Text
'comAdd.Parameters.Add("@No_Count", OleDbType.VarChar).Value = CDbl(lblSumBeforeDiscount.Text) AutoNumber ไม่ต้อง Insert มันจะเติมให้เอง
'comAdd.ExecuteNonQuery()
Conn = New OleDbConnection(strConn)
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
With comAdd
.CommandText = sqlSale
'.ExecuteNonQuery()
End With
'INTERT ข้อมูลในตาราง Sale
Dim i As Integer = 0
Dim tmpFoodId As String = ""
'Dim sqlFood As String = ""
Dim tmptxtAmount As Integer = 0
Dim tmplbltotal As Integer = 0
Dim tmpAmount As Integer = 0
Dim tmplblSalePrice As Integer = 0
Dim tmpSum As Integer = 0
Dim tmpDiscount As Integer = 0
Dim tmpNet As Integer = 0
Dim tmpRentDate As Date
Dim tmpReturnDate As Date
tmpRentDate = Date.Now
If rIsMember = "1" Then
rRentRateDiscount = 0
End If
Dim sqlFood As String
sqlFood = "Insert Into [Sale] ([Or_No], [Food_Id], [Unit_Price], [Amount], [Total]" & _
"Values (" & _
"@Or_No, @Food_Id, @Unit_Price, @Amount," & _
")"
'Dim comFoos As OleDbCommand = New OleDbCommand(sqlSale, Conn)
comAdd.Parameters.Add("@Or_No", OleDbType.VarChar).Value = LastSaleID
'comAdd.Parameters.Add("@Ore_date", OleDbType.Date).Value = dtpAdmitDate.Value 'DatePicker เป็น Date อยู่แล้วไม่ต้อง Convert
comAdd.Parameters.Add("@Food_Id", OleDbType.VarChar).Value = txtFoodId.Text
comAdd.Parameters.Add("@Unit_Price", OleDbType.Integer).Value = lblSalePrice.Text
comAdd.Parameters.Add("@Amount", OleDbType.Integer).Value = txtAmount.Text
comAdd.Parameters.Add("@Total", OleDbType.VarChar).Value = lbltotal.Text
'comAdd.Parameters.Add("@No_Count", Integer.VarChar).Value = CDbl(lblSumBeforeDiscount.Text) AutoNumber ไม่ต้อง Insert มันจะเติมให้เอง
For i = 0 To lsvFoodList.Items.Count - 1
tmpFoodId = (lsvFoodList.Items(i).SubItems(0).Text)
tmplblSalePrice = CInt(lsvFoodList.Items(i).SubItems(2).Text)
tmptxtAmount = CInt(lsvFoodList.Items(i).SubItems(3).Text)
tmplbltotal = CInt(lsvFoodList.Items(i).SubItems(4).Text)
'tmpSum = tmpAmount + (tmplblSalePrice * tmpAmount)
sqlSale &= "'," & tmpFoodId & "',"
sqlSale &= "'," & tmplblSalePrice & "',"
tmpReturnDate = tmpRentDate.AddDays(tmplbltotal)
tmpSum = (tmptxtAmount * tmplblSalePrice)
tmpDiscount = CInt(tmpSum * rRentRateDiscount)
tmpNet = tmpSum - tmpDiscount
sqlSale &= tmpNet & ","
sqlSale &= "'0')"
'INTERT ข้อมูลในตาราง Pay
Dim sqlPay As String
sqlPay = "Insert Into [Pay] (Pay_No], [Pay_Date], [Or_No]" & _
"Values (" & _
"@Pay_No, @FPay_Date, @Or_No," & _
")"
'Dim comFoos As OleDbCommand = New OleDbCommand(sqlSale, Conn)
comAdd.Parameters.Add("@Pay_No", OleDbType.VarChar).Value = tmptakeid
comAdd.Parameters.Add("@Pay_Date", OleDbType.Date).Value = dtpAdmitDate.Value 'DatePicker เป็น Date อยู่แล้วไม่ต้อง Convert
comAdd.Parameters.Add("@Or_No", OleDbType.Integer).Value = lblPayNo.Text
comAdd.Parameters.Add("@Total_Pay", OleDbType.Integer).Value = lblNet.Text
Next
If chkNotMember.Checked = True Then
Dim sqlMem As String = ""
Dim comMember As OleDbCommand = New OleDbCommand
sqlMem = "INSERT INTO Member (Mem_ID,Mem_Name,MemId_Card,"
sqlMem &= " Mem_Sex,Mem_Add,Mem_Phone,DateRegis,IsMembe)"
sqlMem &= " VALUES ('" & txtMemId.Text & "',"
sqlMem &= "'" & txtMemName.Text & "',"
sqlMem &= "'" & txtidcard.Text & "',"
If OptMale.Checked = True Then
sqlMem &= "'=ชาย',"
ElseIf OptFemale.Checked = True Then
sqlMem &= "'หญิง',"
End If
sqlMem &= "'" & txtMemAdd.Text & "',"
sqlMem &= "'" & txtphone.Text & "',"
sqlMem &= "'" & tmpRentDate & "',"
sqlMem &= "'', '1','0')"
With comMember
'.CommandText = sqlMem
'.ExecuteNonQuery()
.CommandType = CommandType.Text
.CommandText = sqlMem
.Connection = Conn
.ExecuteNonQuery()
End With
End If
MessageBox.Show("บันทึกรายการสั่งอาหารเรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
If IsInstallPrinter() = True Then
If prDlg.ShowDialog = Windows.Forms.DialogResult.OK Then
prDoc.Print()
End If
Else
MessageBox.Show("กรุณาติดตั้งเครื่อง Printer ก่อนสั่งพิมพ์เอกสาร", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
ClearAllMemberData()
ClearAllFoodData()
lsvFoodList.Items.Clear()
lblSumBeforeDiscount.Text = "0"
lblDiscount.Text = "0"
lblNet.Text = "0"
chkNotMember.Checked = False
'cboMemberType.SelectedIndex = 0
txtMemId.Enabled = True
txtMemId.Focus()
End If
Catch ErrProcess As Exception
MessageBox.Show("ไม่สามารถบันทึกรายการสั่งอาหารได้ เนื่องจาก " & ErrProcess.Message, "ข้อผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Exit Sub
Conn.Close()
End Try
End Sub
|
 |
 |
 |
 |
Date :
2010-02-04 18:35:14 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

บันทึกข้อมูลได้แค่ ครั้งเดียวเอง ค่ะ
พอครั้งที่ 2 ก้อเออเล่อแบบนี้ เลย
ไม่ทราบว่ามันเป็นอะไร ค่ะ พี่
|
 |
 |
 |
 |
Date :
2010-02-05 13:03:44 |
By :
ยัยใบบ้า |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ที่เป็น Error ล่าสุดเป็นที่ PrimaryKey ซ้ำครับ ให้หาทาง Gen ใหม่อย่าให้ซ้ำก็หายแล้วครับ แต่เท่าที่ดูภาพรวม ๆ น้องยังไม่เข้าใจเท่าที่ควรเลยทำให้น้องคิดต่อไปลำบาก คือ
1. การกำหนดชื่อฟิลด์ในตารางทีน้องกำหนดให้มีช่องว่าง พอนำไปเข้าโค้ดใน VB ก็เลยทำให้ผพลาดได้ง่าย ทางที่ดีอย่าให้มีช่องว่างให้ติดกันไปเลย
2. การเขียนเชื่อมต่อกับ Database
3. การเขียน StatmentSQL ที่น้องเขียนมีคนบอกน้องทั้งสองแบบครับ
3.1 แบบที่ให้ใส่ Insert Into ตรง ๆ
3.2 แบบการส่งแบบ Parameter ครับ แบบนี้จะชัวร์กว่า เพราะต้องกำหนด Datatype ให้ตรงกับฐานข้อมูล
แบบที่ 3.2 จะแม่นยำกว่าและง่ายกว่าครับ
ถ้าอยากได้ความรู้ตรงไหนก็ให้ E-Mail มาครับ จะได้สอนให้เข้าใจดีกว่าไปจำเอาครับ รุ่นพี่มีตัวอย่างให้เพื่อให้เรานำไปคิดให้เข้าใจแต่ไม่ได้ให้ท่องจำแล้วเจอของใหม่ทำไม่ได้ก็ต้องมาถามใหม่อีกครับ ไม่อยากให้เป็นอย่างนั้น
|
 |
 |
 |
 |
Date :
2010-05-29 01:47:38 |
By :
พี่เป้ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|