 |
|
มีใครช่วยผมได้บ้าง เรื่องของ Throw New Exception("HasAccountTransection") win app vb2008 |
|
 |
|
|
 |
 |
|
พยายามจะให้หยุดการทำงานเมื่อเกิด error หรอคะ
ที่เขียนมาน่ะถูก syntax แต่โปรแกรมจะหยุดการทำงานเมื่อถึง throw นั่นอยู่แล้ว
อ้อ HasAccountTransaction นะคะ แก้นิสนุง
ไม่ลอง override eventArgs แล้ว เพิ่ม properties isError ออกไปแทนละคะ
ถ้า Error ก็ true
|
 |
 |
 |
 |
Date :
2010-12-14 21:28:36 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ก่อนอื่นต้องขอขอบคุณ คุณ Stupid.gurl.th ที่ช่วยแนะนำ
ที่ทำแบบนี้คือพยายามจะให้รูปแบบการเขียนโปรแกรมคล้ายของ MicroSoft ให้มากที่สุด เวลาคนอื่นใช้จะได้เข้าใจง่าย
เพราะหากเป็น properties ก็ดูเหมือนต้องจำเพิ่มและจำยาก หรือถ้าไม่ได้ใช้นานก็จะลืม แต่หลังจากลองมาหลายตลบ
ก็ทำไม่สำเร็จ คงต้องเพิ่ม Properties มาตรวจเช็คการยกเลิก
ส่วน Transaction แก้แล้วนะครับ ปกติค่อยข้างอ่อนอังกฤษนะครับ เลยสะกดผิดบ่อย
อ้อ แล้วที่แซวผมไว้นะครับ ลูกผมอายุน้อยกว่า VB6 เยอะครับ
|
ประวัติการแก้ไข 2010-12-14 22:45:29
 |
 |
 |
 |
Date :
2010-12-14 22:43:05 |
By :
base3000 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ป่าวแซวค่ะ ถามเพราะอยากทราบจิง ๆ ^^
แล้วคุนผู้ชายตัวเล็กๆคนนั้นชื่อรายคะ
ออแก้ด้วยไม่ใช่ override มันต้องเป็น inherit สิเนอะคะ
ขออำภัยอย่างแรงค่ะ
|
ประวัติการแก้ไข 2010-12-15 09:37:02
 |
 |
 |
 |
Date :
2010-12-15 09:33:14 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เจ๊พราวรักเด็ก ปีหน้าthaicreate.com ส่งเข้าประกวด นางงามจัรวาล เรยนะครับ
|
 |
 |
 |
 |
Date :
2010-12-15 10:18:01 |
By :
noizeless |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าว่างอะนะคะ ขอบคุนที่ให้คำแนะนำค่ะ ทีหลังไม่ต้องไม่ได้ถามค่ะ
|
 |
 |
 |
 |
Date :
2010-12-15 10:20:38 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อาม ครับ
ว่าแต่อย่าดุเด็กใหม่มากนะครับ เดี๋ยวจะฝ่อก่อนเป็น โปรแกรมเมอร์
|
 |
 |
 |
 |
Date :
2010-12-15 12:22:55 |
By :
base3000 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
การใช้ Thrown New Exception("....")
ต้องเอาไว้ใน Try Box ครับ
Code (VB.NET)
Try
...
If <ตรวจสอบความผิดพลาด> Then Throw New Exception("มีความผิดพลาด")
Catch ex As Exception
Messagebox.Show(ex.Message)
End Try
|
ประวัติการแก้ไข 2010-12-15 12:35:38 2010-12-15 12:36:49
 |
 |
 |
 |
Date :
2010-12-15 12:34:19 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณครับ จะไปลองดู
ลองมาแล้วครับ ใช้ได้จริงด้วย อย่างนี้สงสัยไม่ใช่แค่หางอึ่งแล้วละครับ
อย่างน้อยคงต้องน้องเซียน
|
ประวัติการแก้ไข 2010-12-15 13:40:08
 |
 |
 |
 |
Date :
2010-12-15 13:04:07 |
By :
base3000 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Public Class MyDeleteGridEventArgs
Inherits EventArgs
Private _IsError As Boolean = False
Private _Ex As Exception = Nothing
Public Property IsError() As Boolean
Get
Return _IsError
End Get
Set
_IsError = value
End Set
End Property
Public Property Ex() As Exception
Get
Return _Ex
End Get
Set
_Ex = value
_IsError = (value IsNot Nothing)
End Set
End Property
Public Sub New(argIsError As Boolean)
_IsError = argIsError
End Sub
Public Sub New(argEx As Exception)
Me.Ex = argEx
End Sub
End Class
Class ....
Delegate Sub OnGridRowDeleteHandler ( ByVal Sender As Object ,ByVal e As MyDeleteGridEventArgs )
Public Event OnGridRowDeleteCancel AS OnGridRowDeleteHandler
...
...
...
Private Sub dt_RowDelete( ByVal Sender As Object ,ByVal e As DataRowChangedEvent ) Handles dt.RowDeleted
if CancelAction Then
CancelAction = False
e.Row.RejectChanges()
Dim ex As Exception = New Exception ("Has account transaction.")
Dim myEventArgs As MyDeleteGridEventArgs = New MyDeleteGridEventArgs (ex)
RaiseEvent OnGridRowDeleteCancel ( Sender ,myEventArgs )
End If
End Suub
...
...
...
End Class
' ไม่ได้ผิดรูปแบบ microsoft อะรัยนี่คะ เพราะทั้ง .net framework เกือบจะทุก class เขียนมาให้ inherit อยู่ละ
' ถ้าจะเอาไปใช้ ก็ไปเชื่อม event ด้วยการ handle ต่อไปเรื่อยๆ ค่ะ
|
ประวัติการแก้ไข 2010-12-15 14:43:13
 |
 |
 |
 |
Date :
2010-12-15 14:42:43 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ต้องขอบคุณ คุณพราว รึเปล่าครับ เห็นข้างบนเขาเรียกขาน
ขอขอบคุณเป็นอย่างสูงนะครับ อุตส่าเสียสละเวลา เขียนตัวอย่างมาให้ดู
ขอไปลองก่อนนะครับ แล้วจะกลับมาแจ้งผลให้ทราบ
|
ประวัติการแก้ไข 2010-12-15 15:02:36
 |
 |
 |
 |
Date :
2010-12-15 15:01:22 |
By :
base3000 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สงสัยกระทู้นี้ท่าทางจะยาวไม่จบง่ายๆ
|
 |
 |
 |
 |
Date :
2010-12-15 15:09:39 |
By :
noizeless |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ปล. เนื่องจากสิ่งนี้เป็น Oject ที่สร้างใหม่ อาจมี Method หรือ Functions ที่ไม่คุ้นก็ไม่ต้องตกใจนะครับ
เรื่องของเรื่องก็คือ ผมมีผังบัญชีที่เรียกใช้บ่อย จึงมีแนวคิดว่าจะสร้าง Class ที่ Inherits มาจาก BindingSource มาแล้วรวม DataTable เข้าไป รวมทั้งคำสั่งต่างๆ ในการเรียกข้อมูล เอาเป็นว่าเขียน 3 บรรทัด ได้มาครบทุกอย่าง แต่ผังบัญชีดันมีข้อแม้ว่า ถ้ามีรายการบัญชีอยู่ ก็จะต้องลบไม่ได้ แล้วเจ้า BindingSource ก็ลบได้หลายทางด้วย ต่อเข้า DataGridView แล้วลบก็ยังได้ จึงต้องไปเขียนงานตรวจสอบ
ไว้ที่ Event ของ DataTable ไม่สามารถ Overrides คำสั่ง Remove ทั้งหลายของ BindingSource ได้ แต่พอมาตรวจสอบจากจุดนี้ ก็ไม่สามารถผลการตรวจสอบออกไปแบบ Function ได้ ก็เลยคิดจะเอา Try Catch มาใช้ เกรินมาซะยาว แต่ก็เพื่อจะได้สื่อสารตรงกัน
ทีนี้มาดูโค๊ดที่คุณพราวกรุณา โพสให้ แต่ต้องขอออกตัวก่อนนะครับ ว่าผมก็ยังไม่รู้อีกมาก ในครั้งนี้ไม่รู้ความเข้าใจผมจะถูกหรือเปล่า
ผมลองดูแล้ว ปรากฏว่าโค๊ดของคุณพราว เป็นการสร้าง Event ให้กับ Oject ของผม หากเป็นเช่นนั้น ผมก็ไม่สามารถหยุดการทำงาน
ของคำสั่งลบได้ และถ้าผมย้ายคำสั่งต่อจากคำสั่งลบไปไว้ที่ Event ใหม่ที่สร้างขึ้นมา ผมว่าน่าจะยุ่งยากว่า
การสร้าง EventArgs ขึ้นมากใหม่ จะมีประโยชน์ก็ต่อเมื่อต้องการบรรจุตัวแปรเพิ่มเข้าไปตามที่เราต้องการ แต่ปัญหาของผมคือ ไม่
สามารถส่งผลลัพธ์จาก Event Handles dt.RowDeleted มาที่จุดสั่งลบได้โดยตรง ความเข้าใจของผมเป็นอย่างนี้ ไม่รู้ว่าถูกต้องหรือเปล่า ถ้าคุณพราวมีข้อแนะนำเพิ่มเติม ก็บอกด้วยนะครับ แต่ถ้าไม่ไหวแล้วก็ไม่เป็นไรนะครับ ขอบคุณครับ

[font=Verdana]ภาพหลังคือแบบที่คิดไว้ในตอนแรก[/font]

|
ประวัติการแก้ไข 2010-12-15 17:30:14 2010-12-15 17:31:33
 |
 |
 |
 |
Date :
2010-12-15 17:26:14 |
By :
base3000 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือไม่คอยเล่น .net นะครับ อยากถาม ว่า delegate คืออะไร
ปล. ตอนนี้ ไร้ทฤษฎี แต่มีไร้สาระ 
|
 |
 |
 |
 |
Date :
2010-12-15 22:21:39 |
By :
pjgunner.com |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอ Copy เก็บไว้ก่อนละกันนะครับ
เพราะตอนนี้ได้ในสิ่งที่ต้องการแล้ว แม้จะไม่ 100%
คือ กลัวว่าจะเตลิดไปไกล จะไม่ได้งานนะครับ แล้วก็เกรงใจคุณพราวนะครับ
ขอขอบคุณมา ณ โอกาสนี้นะครับ
|
ประวัติการแก้ไข 2010-12-16 08:07:06
 |
 |
 |
 |
Date :
2010-12-16 08:04:54 |
By :
base3000 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|