ทำโปรแกรมเป็น install คับพี่ ๆน้อง ๆสามารถเอาไปใช้ได้เคดิต คุณหางอึ่ง ที่ช่วยครับ
เคนเจอ Case นี้ครับ แสดงว่าโปรแกรมมันเกิด Error แน่นอนครับ ลอง Copy ตรง Exception ทั้งหมดมาให้ดูครับ
Date :
2011-03-24 08:23:58
By :
webmaster
ครับ แต่ไปเอา Exception ตรงไหนอะครับ Case นี้ไม่เคยเจอ หรือว่าในตัวหน้าจอที่มันขึ้น Error ครับ
แบบนี้หรือป่าวคับ คุณ win
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Data.OleDb.OleDbException: Operation must use an updateable query.
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
at NEW_PROGRAMMARKETING.ADD_LISTNAMEDOCTOR.cmd_Save_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
NEW_PROGRAMMARKETING
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Program_marketing/NEW_PROGRAMMARKETING.exe
----------------------------------------
Microsoft.VisualBasic
Assembly Version: 8.0.0.0
Win32 Version: 8.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Runtime.Remoting
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
System.Data
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Transactions
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/assembly/GAC_32/System.Transactions/2.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_32/System.EnterpriseServices/2.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
ประวัติการแก้ไข 2011-03-24 08:35:13 2011-03-24 08:37:33 2011-03-24 08:45:49 2011-03-24 13:45:37
Date :
2011-03-24 08:34:02
By :
angelrings0
ไม่มีท่านกูรูมาตอบเลย ง่า จะทำเช่นไร
Date :
2011-03-24 13:46:16
By :
angelrings0
ก็ปัญหามันยากนิ
ผมก็ติดปัญหาของผมอยู่เหมือนกัน
เขียน VB.NET 2005 ใช้ Crystal Report 10.2
บน Windows XP
ทำตัว Install ไปลงบนเครื่อง Windows XP ทำงานได้ไม่มีปัญหาอะไร
แต่พอเอาลงบนเครื่อง Windows 7 -> พิมพ์รายงาน Crystal Report ไม่ได้ซะงั้น
ไปดู Assembly Cache (C:\Windows\Assembly) ก็เห็นมี Crystal Report Component ดูครบดี
เซ็งเป็ดมาก
Date :
2011-03-24 14:20:08
By :
หางอึ่ง
ตอบคุณ หางอึ่งครับ
ผมก้อเป็นครับ
คือ ว่ามันใช้ สถาปัตยกรรม อะไรสักอย่างนิแหละไม่เหมือนกัน คับ ผมใช้ vb6 เขียนก้อใช้ไม่ได้เหมือนกัน
เลยมาทำ vb 2008 เนี่ยแหละคับมันแก้ปัญหาตรงนี้ได้ แต่ก้อติดอย่างที่เห็นแหละครับ ไม่เข้าใจ เป็น งง
Date :
2011-03-24 15:01:48
By :
angelrings0
ครับคุณ win ผมจะลองดูนะครับ ได้ผลแบบไหนรายงานเป็นระยะ ครับผม
Date :
2011-03-24 15:03:04
By :
angelrings0
ครับคุณ win
รายงานผล เหมือนเดิมครับ เปิดสิทธิให้ทุกอย่างก้อยังเหมือนเดิม
ทำมัยมันทำ Install ยากจิง ๆ vb6 กับ vb2005 ง่ายกว่าอีก แค่ไม่มี Error
ก้อทำตัว Install ได้แล้ว แต่นี้ไม่ Error สักที่ ทำ Install ไม่ได้ไม่เข้าจัย
ถ้าอยู่ใกล้ นะจะเอาไปให้ดู แต่นี้ผมอยู่เชียงใหม่ คงลำบาก -*-
ประวัติการแก้ไข 2011-03-24 16:19:40
Date :
2011-03-24 16:10:33
By :
angelrings0
Error เดิมหรือเปล่าครับ
Date :
2011-03-24 17:30:01
By :
webmaster
โทษทีครับ เกิด Error เหมือน เดิมครับ ทำตามที่คุณ win บอกแล้วนะคับ
ก้อยังเหมือนเดิม
Date :
2011-03-25 07:51:44
By :
angelrings0
จริง ๆ ด้วย Readonly ครับ
Date :
2011-03-25 08:39:16
By :
webmaster
อ้อ ผมแค่เอามาเป็นตัวอย่างนะครับ ลองทั้งติ๊ก Readonly หรือไม่ Readonly ก้อเหมือนเดิมครับ
Date :
2011-03-25 09:37:53
By :
angelrings0
1. ลองเปิดไฟล์ข้อมูลด้วย MSAccess บนเครื่องที่มีปัญหา
แล้วเอาคำสั่ง Update ไปรันดูรึยังครับ
2. โปรแกรมมีปัญหาฟอร์มเดียว หรือทุกฟอร์มที่เกี่ยวข้องกับการ Update Query?
Date :
2011-03-25 10:09:29
By :
หางอึ่ง
มันไม่สามารถ เพิ่ม ลบ แก้ไข ได้เลย แต่อย่างอื่นทำได้หมด เหมือนกับว่ามันไม่ให้ทำการ เพิ่่ม ลบแก้ไข นะคับ
แต่พอเรา รันในโปรแกรม vb2008 มันก้อไม่มีปัญหาอะไรนะครับ แต่พอทำเป็นตัว install แล้วมันกลับทำไม่ได้นะครับ
แปลกดี ถ้าจะเอาโค๊ดไปลองก้อได้นะครับผมไม่หวงครับ ถือว่าแลกเปลี่ยนกัน ถ้างั้ย บอก mail มาได้ ทั้ง คุณหางอึ่ง
และคุณ win จะเอาไปลองดูได้ครับ โปรแกรมเล็ก ๆ ครับ แต่รายงานทั้งหมดผมออกทาง Excel ทั้งหมดนะครับ อิอิ
ประวัติการแก้ไข 2011-03-25 10:25:07
Date :
2011-03-25 10:24:16
By :
angelrings0
PM ไปแล้ว
Date :
2011-03-25 10:37:19
By :
หางอึ่ง
PM ไปที่ใครครับไม่เห็นเลย โพล์ ลงในนี้เลยครับ เดียวจัดให้ หาไม่เจอใน PM เลย
Date :
2011-03-25 10:41:38
By :
angelrings0
angelrings0
คราวนี้น่าจะได้แล้ว
คุณ win ครับ
เมื่อกี้ ผมลองจิ้มเข้าไปที่ profile ของ angelrings0
แล้วเจอคำว่า Send Private Message (PM)
ตรงนี้ไม่ได้หมายความว่า เราต้องการส่ง PM ถึงเค้าเหรอครับ
Date :
2011-03-25 10:56:43
By :
หางอึ่ง
angelrings0
ขออภัยนะครับ
ไม่อยากทั้งเมล์ไว้ในหน้า Webboard
มันประเจิดประเจ้อไปหน่อยน่ะครับ
Date :
2011-03-25 10:58:04
By :
หางอึ่ง
ยกเลิก Read Only ทั้งตัว ACCESS และ *** Folder ที่เก็บ ACCESS ผมว่าติดตรง Folder นี้แหละ
Date :
2011-03-25 11:21:14
By :
kaimuk
ส่งให้แล้วนะครับ คุณหางอึ่ง คุณ win จะเอาไปลองดูด้วยป่าวครับ จะได้ส่งให้
PM มาหานะครับถ้าเอา จะได้วิจารณ์ งานที่ผมเขียนด้วย อิอิ มือใหม่ vb.net
แต่ vb6 พอตัวคับ เดียวผม pm เมล์ไปให้นะครับคุณหางอึ่ง
ประวัติการแก้ไข 2011-03-25 11:58:14 2011-03-25 12:05:32
Date :
2011-03-25 11:57:27
By :
angelrings0
ผมยังใช้ VB.NET 2005 อยู่เลย
ไม่รู้จะเปิดของคุณได้รึเปล่า ต้องไปลองที่บ้าน
ขออนุญาตให้ความเห็นเกี่ยวกับการเขียนโปรแกรม เท่าที่ความรู้ผมมีนะครับ
EDIT_LISTDOCTOR_ORDER_BYNAME.vb
Option Explicit On
Imports System.Data.OleDb
Public Class EDIT_LISTDOCTOR_ORDER_BYNAME
Dim strConn As String
Dim Conn As New OleDbConnection
Dim da, da1, da2, da3 As OleDbDataAdapter
Dim dc1, dc2, dc3 As New DataTable
Dim ds, Dataset As New DataSet()
Dim ComSearch As New OleDbCommand
Dim CurrentEmployees As Integer
Dim IsFind As Boolean = False
Private Sub EDIT_LISTDOCTOR_OTHER_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
LoadFiledata()
showAllDoctor()
cmd_EDIT.Enabled = False : cmd_SAVEEDIT.Enabled = False
cmd_DELECT.Enabled = False : cmd_CLEAR.Enabled = False
cmd_Searchdata.Enabled = False : cmd_EXIT.Enabled = True
ClearTextF() : txt_Searchdata.Focus()
End Sub
Private Sub LoadFiledata()
' Code ติดต่อกับฐานข้อมูล Accress 2007
' strConn = "Provider=Microsoft.ACE.OLEDB.12.0; " & _
' "Data Source=..\\NEWMarketing.accdb;Persist Security Info=False"
' Code ติดต่อกับฐานข้อมูล Accress 2003
strConn = "provider=Microsoft.Jet.oleDb.4.0; Data Source=..\\NEWMarketing.mdb"
Dim Conn As New OleDbConnection(strConn)
Conn.Open()
Dim Sql As String = "select * from savedoctors"
Dim Cmd As New OleDbCommand(Sql, Conn)
Dim Adapter As New OleDbDataAdapter(Cmd)
Dim Data As New DataSet()
Adapter.Fill(Data, "cat")
Dim Data1 As New DataSet()
DataGridView1.DataSource = Data.Tables("cat")
Conn.Close()
Dim sqlCategories As String
sqlCategories = "SELECT * from savedoctors"
da = New OleDbDataAdapter(sqlCategories, Conn)
da.Fill(ds, "savedoctors")
Return
End Sub
Private Sub CallDataContant_Title()
'---------------------------------------------(เรียกข้อมูลจาก Table Provinces มาแสดงใน Combobox)
Dim sqlComputer_Plean As String
Dim Conn As New OleDbConnection(strConn)
Conn.Open()
sqlComputer_Plean = "SELECT id_Contact,contact_type FROM Contact_type"
da1 = New OleDbDataAdapter(sqlComputer_Plean, Conn)
da1.Fill(dc1)
With cmb_Contact
.DataSource = dc1
.DisplayMember = dc1.Columns.Item("contact_type").ColumnName 'ตัวที่ใช้แสดงใน Combobox
.SelectedItem = dc1.Columns.Item("id_Contact").ColumnName 'รหัสที่เราสร้างขึ้นมาเช่น Primary Key
End With
Return
End Sub
Private Sub CallDataPlance_Title()
'---------------------------------------------(เรียกข้อมูลจาก Table Provinces มาแสดงใน Combobox)
Dim sqlComputer_Plean As String
Dim Conn As New OleDbConnection(strConn)
Conn.Open()
sqlComputer_Plean = "SELECT id_plan,workplean_labtype FROM Workplean_type"
da2 = New OleDbDataAdapter(sqlComputer_Plean, Conn)
da2.Fill(dc2)
With cmb_Workplean
.DataSource = dc2
.DisplayMember = dc2.Columns.Item("workplean_labtype").ColumnName 'ตัวที่ใช้แสดงใน Combobox
.SelectedItem = dc2.Columns.Item("id_plan").ColumnName 'รหัสที่เราสร้างขึ้นมาเช่น Primary Key
End With
Return
End Sub
Private Sub CallDataPrivince_Title()
'---------------------------------------------(เรียกข้อมูลจาก Table Provinces มาแสดงใน Combobox)
Dim sqlComputer_Plean As String
Dim Conn As New OleDbConnection(strConn)
Conn.Open()
sqlComputer_Plean = "SELECT id_province,name_province FROM Province_type"
da3 = New OleDbDataAdapter(sqlComputer_Plean, Conn)
da3.Fill(dc3)
With cmb_Province
.DataSource = dc3
.DisplayMember = dc3.Columns.Item("name_province").ColumnName 'ตัวที่ใช้แสดงใน Combobox
.SelectedItem = dc3.Columns.Item("id_province").ColumnName 'รหัสที่เราสร้างขึ้นมาเช่น Primary Key
End With
Return
End Sub
Private Sub ClearTextT()
txt_Type.Text = "" : txt_Type.Enabled = True
lbl_Name.Text = "" : lbl_Name.Enabled = True
txt_birthday.Text = "" : txt_birthday.Enabled = True
lbl_Clinic.Text = "" : lbl_Clinic.Enabled = True
txt_Address.Text = "" : txt_Address.Enabled = True
txt_Tel.Text = "" : txt_Tel.Enabled = True
txt_Tels.Text = "" : txt_Tels.Enabled = True
txt_Telwork1.Text = "" : txt_Telwork1.Enabled = True
txt_Telwork2.Text = "" : txt_Telwork2.Enabled = True
txt_Fax.Text = "" : txt_Fax.Enabled = True
txt_Email.Text = "" : txt_Email.Enabled = True
txt_Working.Text = "" : txt_Working.Enabled = True
txt_Service.Text = "" : txt_Service.Enabled = True
txt_Marks.Text = "" : txt_Marks.Enabled = True
txt_Plean.Text = "" : txt_Plean.Enabled = True
cmb_Province.Text = "จังหวัด" : cmb_Province.Enabled = True
txt_website.Text = "" : txt_website.Enabled = True
cmb_Contact.Text = "สถานะการติดต่อ" : cmb_Contact.Enabled = True
cmb_Workplean.Text = "สถานประกอบการ" : cmb_Workplean.Enabled = True
End Sub
Private Sub ClearTextF()
lbl_id.Text = "000000"
txt_Type.Text = "" : txt_Type.Enabled = False
lbl_Name.Text = "" : lbl_Name.Enabled = False
txt_birthday.Text = "" : txt_birthday.Enabled = False
lbl_Clinic.Text = "" : lbl_Clinic.Enabled = False
txt_Address.Text = "" : txt_Address.Enabled = False
txt_Tel.Text = "" : txt_Tel.Enabled = False
txt_Tels.Text = "" : txt_Tels.Enabled = False
txt_Telwork1.Text = "" : txt_Telwork1.Enabled = False
txt_Telwork2.Text = "" : txt_Telwork2.Enabled = False
txt_Fax.Text = "" : txt_Fax.Enabled = False
txt_Email.Text = "" : txt_Email.Enabled = False
txt_Working.Text = "" : txt_Working.Enabled = False
txt_Service.Text = "" : txt_Service.Enabled = False
txt_Marks.Text = "" : txt_Marks.Enabled = False
txt_Plean.Text = "" : txt_Plean.Enabled = False
cmb_Province.Text = "จังหวัด" : cmb_Province.Enabled = False
txt_website.Text = "" : txt_website.Enabled = False
cmb_Contact.Text = "สถานะการติดต่อ" : cmb_Contact.Enabled = False
cmb_Workplean.Text = "สถานประกอบการ" : cmb_Workplean.Enabled = False
End Sub
Private Sub ClearTextEdit()
txt_Type.Enabled = True : lbl_Name.Enabled = True
txt_birthday.Enabled = True
lbl_Clinic.Enabled = True : txt_Address.Enabled = True
txt_Tel.Enabled = True : txt_Tels.Enabled = True
txt_Telwork1.Enabled = True : txt_Telwork2.Enabled = True
txt_Fax.Enabled = True : txt_Email.Enabled = True
txt_Working.Enabled = True : txt_Service.Enabled = True
txt_Marks.Enabled = True : txt_Plean.Enabled = True
cmb_Province.Enabled = True : txt_website.Enabled = True
cmb_Contact.Enabled = True : cmb_Workplean.Enabled = True
End Sub
Private Sub showAllDoctor() ' Function ใช้เพื่อ Call Table Doctor
Dim SqlDoctor As String
SqlDoctor = "SELECT * From savedoctors"
SqlDoctor &= " FROM savedoctors"
da.SelectCommand.CommandText = SqlDoctor
If IsFind = True Then
ds.Tables("savedoctors").Clear()
End If
If ds.Tables("savedoctors").Rows.Count <> 0 Then
IsFind = True
With DataGridView1
.ReadOnly = True
.DataSource = ds.Tables("savedoctors")
End With
Else
IsFind = False
End If
Formdisplay_Colum()
Return
End Sub
Private Sub Formdisplay_Colum() ' Function แสดงหัวข้อบน Gridviwe Table Doctor
Dim Ss As New DataGridViewCellStyle()
Ss.Font = New Font("AngsanaUPC", 17, FontStyle.Bold)
With DataGridView1
If .RowCount > 0 Then
.Columns(0).HeaderText = "รหัส"
.Columns(1).HeaderText = "อักษรนำหน้ารหัส"
.Columns(2).HeaderText = "ชื่อทันตแพทย์"
.Columns(3).HeaderText = "วัน / เดือน / ปี เกิด"
.Columns(4).HeaderText = "ชื่อคลินิก"
.Columns(5).HeaderText = "ที่อยู่"
.Columns(6).HeaderText = "เบอร์มือถือ"
.Columns(7).HeaderText = "เบอร์มือถือ"
.Columns(8).HeaderText = "เบอร์ที่ทำงาน"
.Columns(9).HeaderText = "เบอร์ที่ทำงาน"
.Columns(10).HeaderText = "เบอร์แฟร์ก"
.Columns(11).HeaderText = "E - MAIL ADDRESS"
.Columns(12).HeaderText = "ลักษณะงานที่ทำ"
.Columns(13).HeaderText = "แล็ปที่ใช้บริการ"
.Columns(14).HeaderText = "หมายเหตุ"
.Columns(15).HeaderText = "สถานที่ทำงาน"
.Columns(16).HeaderText = "จังหวัดที่ตั้งสถานประกอบการ"
.Columns(17).HeaderText = "WEB - SITE"
.Columns(18).HeaderText = "สถานะการติดต่อ"
.Columns(19).HeaderText = "ประเภทสถานประกอบการ"
.Columns(20).HeaderText = "ตรวจสอบสถานะ"
.Columns(0).Width = 53
.Columns(1).Width = 120
.Columns(2).Width = 200
.Columns(3).Width = 120
.Columns(4).Width = 290
.Columns(5).Width = 340
.Columns(6).Width = 95
.Columns(7).Width = 95
.Columns(8).Width = 105
.Columns(9).Width = 105
.Columns(10).Width = 95
.Columns(11).Width = 210
.Columns(12).Width = 160
.Columns(13).Width = 160
.Columns(14).Width = 250
.Columns(15).Width = 170
.Columns(16).Width = 150
.Columns(17).Width = 247
.Columns(18).Width = 120
.Columns(19).Width = 170
.Columns(20).Width = 100
End If
End With
End Sub
Private Sub DataGridView1_CellMouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseUp
If e.RowIndex = DataGridView1.Rows.Count - 1 Then
Exit Sub
End If
If e.RowIndex = -1 Then Exit Sub
With DataGridView1
CurrentEmployees = CInt(.Rows.Item(e.RowIndex).Cells(0).Value)
lbl_id.Text = .Rows.Item(e.RowIndex).Cells(0).Value.ToString()
txt_Type.Text = .Rows.Item(e.RowIndex).Cells(1).Value.ToString()
lbl_Name.Text = .Rows.Item(e.RowIndex).Cells(2).Value.ToString()
txt_birthday.Text = .Rows.Item(e.RowIndex).Cells(3).Value.ToString()
lbl_Clinic.Text = .Rows.Item(e.RowIndex).Cells(4).Value.ToString()
txt_Address.Text = .Rows.Item(e.RowIndex).Cells(5).Value.ToString()
txt_Tel.Text = .Rows.Item(e.RowIndex).Cells(6).Value.ToString()
txt_Tels.Text = .Rows.Item(e.RowIndex).Cells(7).Value.ToString()
txt_Telwork1.Text = .Rows.Item(e.RowIndex).Cells(8).Value.ToString()
txt_Telwork2.Text = .Rows.Item(e.RowIndex).Cells(9).Value.ToString()
txt_Fax.Text = .Rows.Item(e.RowIndex).Cells(10).Value.ToString()
txt_Email.Text = .Rows.Item(e.RowIndex).Cells(11).Value.ToString()
txt_Working.Text = .Rows.Item(e.RowIndex).Cells(12).Value.ToString()
txt_Service.Text = .Rows.Item(e.RowIndex).Cells(13).Value.ToString()
txt_Marks.Text = .Rows.Item(e.RowIndex).Cells(14).Value.ToString()
txt_Plean.Text = .Rows.Item(e.RowIndex).Cells(15).Value.ToString()
cmb_Province.Text = .Rows.Item(e.RowIndex).Cells(16).Value.ToString()
txt_website.Text = .Rows.Item(e.RowIndex).Cells(17).Value.ToString()
cmb_Contact.Text = .Rows.Item(e.RowIndex).Cells(18).Value.ToString()
cmb_Workplean.Text = .Rows.Item(e.RowIndex).Cells(19).Value.ToString()
lbl_Checkdoc.Text = .Rows.Item(e.RowIndex).Cells(20).Value.ToString()
End With
cmd_EDIT.Enabled = True : cmd_DELECT.Enabled = True
cmd_CLEAR.Enabled = True : cmd_EXIT.Enabled = False
Return
End Sub
Private Sub cmd_Searchdata_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_Searchdata.Click
Dim sqlSearch As String
Dim dr As OleDbDataReader
Dim dt As DataTable
ComSearch = New OleDbCommand()
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
sqlSearch = "Select * from savedoctors where name_doctor like '%" & txt_Searchdata.Text.Trim() & "%' order by id_doctor asc"
With ComSearch
ComSearch.CommandType = CommandType.Text
ComSearch.CommandText = sqlSearch
ComSearch.Connection = Conn
ComSearch.Parameters.AddWithValue("name_doctor", OleDbType.VarChar).Value = txt_Searchdata.Text.Trim()
dr = .ExecuteReader()
If dr.HasRows Then
dt = New DataTable()
dt.Load(dr)
DataGridView1.DataSource = dt
cmd_Searchdata.Enabled = False : cmd_EDIT.Enabled = False
cmd_EXIT.Enabled = False : txt_Searchdata.Enabled = False
Else
MessageBox.Show("ไม่พบข้อมูล")
txt_Searchdata.Clear()
txt_Searchdata.Enabled = True
txt_Searchdata.Focus()
End If
End With
End With
dr.Close()
Return
End Sub
Private Sub txt_Searchdata_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_Searchdata.TextChanged
If txt_Searchdata.Text = "" Then
cmd_Searchdata.Enabled = False
Else
cmd_Searchdata.Enabled = True
End If
End Sub
Private Sub cmd_EDIT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_EDIT.Click
ClearTextEdit()
CallDataContant_Title()
CallDataPlance_Title()
CallDataPrivince_Title()
cmd_EDIT.Enabled = False : cmd_DELECT.Enabled = False
cmd_SAVEEDIT.Enabled = True : cmd_CLEAR.Enabled = True
cmd_EXIT.Enabled = False
End Sub
Private Sub cmd_SAVEEDIT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_SAVEEDIT.Click
Dim SqlEdit As String
Dim ComEdit As New OleDbCommand
If txt_Type.Text = "" Then
MessageBox.Show("กรอกข้อมูลอักษรนำหน้ารหัส !!!", "แจ้งให้ทราบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txt_Type.Focus()
Exit Sub
End If
If txt_Address.Text = "" Then
MessageBox.Show("กรอกข้อมูลที่อยู่ คลินิก / โรงพยาบาล !!!", "แจ้งให้ทราบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txt_Address.Focus()
Exit Sub
End If
If MessageBox.Show("ต้องการแก้ไขข้อมูลทันตแพทย์ หรือไม่", "แจ้งให้ทราบ", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
SqlEdit = "UPDATE savedoctors SET"
SqlEdit &= " id_doctor = '" & lbl_id.Text & "',"
SqlEdit &= " type_doctor = '" & txt_Type.Text & "',"
SqlEdit &= " name_doctor = '" & lbl_Name.Text & "',"
SqlEdit &= " birth_doctor = '" & txt_birthday.Text & "',"
SqlEdit &= " clinic_doctor = '" & lbl_Clinic.Text & "',"
SqlEdit &= " address_doctor = '" & txt_Address.Text & "',"
SqlEdit &= " tel_doctor = '" & txt_Tel.Text & "',"
SqlEdit &= " tels_doctor = '" & txt_Tels.Text & "',"
SqlEdit &= " telwork1_doctor = '" & txt_Telwork1.Text & "',"
SqlEdit &= " telwork2_doctor = '" & txt_Telwork2.Text & "',"
SqlEdit &= " fax_doctor = '" & txt_Fax.Text & "',"
SqlEdit &= " email_doctor = '" & txt_Email.Text & "',"
SqlEdit &= " working_doctor = '" & txt_Working.Text & "',"
SqlEdit &= " labservice_doctor = '" & txt_Service.Text & "',"
SqlEdit &= " marks_doctor = '" & txt_Marks.Text & "',"
SqlEdit &= " Workplace_doctor = '" & txt_Plean.Text & "',"
SqlEdit &= " Province_doctor = '" & cmb_Province.Text & "',"
SqlEdit &= " website_doctor = '" & txt_Email.Text & "',"
SqlEdit &= " Contact_Lab = '" & cmb_Contact.Text & "',"
SqlEdit &= " Workplace_lab = '" & cmb_Workplean.Text & "',"
SqlEdit &= " Check_doc = '" & lbl_Checkdoc.Text & "'"
SqlEdit &= " WHERE id_doctor ='" & lbl_id.Text & "'"
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
ComEdit.CommandType = CommandType.Text
ComEdit.CommandText = SqlEdit
ComEdit.Connection = Conn
ComEdit.ExecuteNonQuery()
End If
MessageBox.Show("แก้ไขข้อมูลทันตแพทย์ เรียบร้อยแล้ว", "แจ้งให้ทราบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
LoadFiledata() ' Function Call เรียกใช้งาน Table Loadtable From Doctor
showAllDoctor() ' Function Call เรียกใช้งาน Table Doctor
Formdisplay_Colum() ' Function Call เรียกใช้งาน Display Field
ClearTextF()
cmd_SAVEEDIT.Enabled = False : cmd_CLEAR.Enabled = False
txt_Searchdata.Enabled = True : txt_Searchdata.Text = ""
txt_Searchdata.Focus()
Return
End Sub
Private Sub cmd_CLEAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_CLEAR.Click
ClearTextF()
cmd_SAVEEDIT.Enabled = False : cmd_EXIT.Enabled = False
cmd_CLEAR.Enabled = False : txt_Searchdata.Enabled = True
cmd_EDIT.Enabled = False : cmd_DELECT.Enabled = False
txt_Searchdata.Text = "" : txt_Searchdata.Focus()
End Sub
Private Sub cmd_DELECT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_DELECT.Click
Dim SqlDelete As String
Dim ComDelete As New OleDbCommand
If (lbl_id.Text = "") Then
Return
End If
If MessageBox.Show("ต้องการลบข้อมูลทันตแพทย์ หรือไม่", "แจ้งให้ทราบ", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
SqlDelete = "DELETE * FROM savedoctors"
SqlDelete = "WHERE id_doctor = lbl_id.Text"
ComDelete = New OleDbCommand(SqlDelete, Conn)
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
SqlDelete = "DELETE * FROM savedoctors WHERE id_doctor = lbl_id.Text"
ComDelete = New OleDbCommand(SqlDelete, Conn)
ComDelete.Parameters.AddWithValue("lbl_id.Text", lbl_id.Text)
ComDelete.ExecuteNonQuery()
End If
MessageBox.Show("ลบข้อมูลทันตแพทย์ เรียบร้อยแล้ว", "แจ้งให้ทราบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
LoadFiledata() ' Function Call เรียกใช้งาน Table Loadtable From Doctor
showAllDoctor() ' Function Call เรียกใช้งาน Table Doctor
Formdisplay_Colum() ' Function Call เรียกใช้งาน Display Field
ClearTextF()
cmd_EDIT.Enabled = False : cmd_DELECT.Enabled = False
txt_Searchdata.Enabled = True : txt_Searchdata.Text = ""
txt_Searchdata.Focus()
Return
End Sub
Private Sub cmd_EXIT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_EXIT.Click
Me.Close()
End Sub
End Class
Date :
2011-03-25 13:29:19
By :
watcharop
ว่ามาเลยครับ ชุดใหญ่ ๆ ยิ่งดี จะได้เอาไปปรับปรุง ข้อบกพร่องของตัวเอง
แล้วที่เอาโค๊ดมาโพล์ จะถามไรเหรอครับ -*- เล่นเอามาทั้ง from เลย อิอิ
ประวัติการแก้ไข 2011-03-25 13:33:41
Date :
2011-03-25 13:32:18
By :
angelrings0
1.โดยทั่วไป ในฟอร์มหนึ่งๆ ใช้ dataset ตัวเดียวก็พอครับ
ไม่รู้ว่าคุณทราบหรือเปล่าว่า dataset สามารถมี datatable ได้หลายตัว
1.1 เพราะฉะนั้น ประกาศ Private ds As New DataSet() ในส่วนของ Declaration ของ Class ตัวเดียวก็พอ
หรือถ้าจะให้ดี ใน Toolbox ของ VS จะมี Component ที่ชื่อ DataSet
ลากมันออกมาวางในฟอร์มได้เลย
1.2 dataset.tables.contains จะช่วยในการตรวจสอบว่ามีตารางที่ระบุอยู่ใน dataset นี้หรือยัง
ds.Tables.Contains("doctors") จะคืนว่าเป็น True ถ้าพบว่ามีตาราง doctors อยู่ใน ds
Date :
2011-03-25 13:41:16
By :
watcharop
ช่วย ๆ กันน่ะครับ พอดีติดงานอยู่น่ะครับ
Cheer!! ให้คุณหางอึ่ง ครับ
Date :
2011-03-25 13:46:00
By :
webmaster
2. เกี่ยวกับ String Connection
เราจะเอาไว้ใน Application Setting นะครับ
คลิกขวาที่ชื่อ Project เลือก Properties แล้วไปที่ Setting
เราจะสร้างมันในหน้านี้แหละครับ
สมมุติเราสร้าง String Connection ชื่อ AppStringConnection
เวลาจะอ้างอิงถึง เราก็เขียนว่า
strConn = My.Setting.AppStringConnection
ข้อดีคือ เมื่อมีการเปลี่ยน Path มันง่ายในการแก้ไขโปรแกรมครับ
String Connection
Private Sub LoadFiledata()
' Code ติดต่อกับฐานข้อมูล Accress 2007
' strConn = "Provider=Microsoft.ACE.OLEDB.12.0; " & _
' "Data Source=..\\NEWMarketing.accdb;Persist Security Info=False"
' Code ติดต่อกับฐานข้อมูล Accress 2003
'Dim conStr As String = _
strConn = "provider=Microsoft.Jet.oleDb.4.0; Data Source=..\\NEWMarketing.mdb"
Dim Conn As New OleDbConnection(strConn)
Conn.Open()
Dim Sql As String = "select * from savedoctors"
Dim Cmd As New OleDbCommand(Sql, Conn)
Dim Adapter As New OleDbDataAdapter(Cmd)
Dim Data As New DataSet()
Adapter.Fill(Data, "cat")
Dim Data1 As New DataSet()
DataGridView1.DataSource = Data.Tables("cat")
Conn.Close()
Dim sqlCategories As String
sqlCategories = "SELECT * from savedoctors"
da = New OleDbDataAdapter(sqlCategories, Conn)
da.Fill(ds, "savedoctors")
Return
End Sub
Date :
2011-03-25 13:47:33
By :
watcharop
3. ควรปิด Connection ทุกครั้งหลังสิ้นสุดการทำงาน
อย่างข้างล่างนี้ Conn.Close() ควรเอาไว้บรรทัดสุดท้าย (ก่อน Return)
da.Fill(ds, "savedoctors") -> จะทำให้ Conn เปิดขึ้นมาอีก
Code (VB.NET)
Private Sub LoadFiledata()
' Code ติดต่อกับฐานข้อมูล Accress 2007
' strConn = "Provider=Microsoft.ACE.OLEDB.12.0; " & _
' "Data Source=..\\NEWMarketing.accdb;Persist Security Info=False"
' Code ติดต่อกับฐานข้อมูล Accress 2003
'Dim conStr As String = _
strConn = "provider=Microsoft.Jet.oleDb.4.0; Data Source=..\\NEWMarketing.mdb"
Dim Conn As New OleDbConnection(strConn)
Conn.Open()
Dim Sql As String = "select * from savedoctors"
Dim Cmd As New OleDbCommand(Sql, Conn)
Dim Adapter As New OleDbDataAdapter(Cmd)
Dim Data As New DataSet()
Adapter.Fill(Data, "cat")
Dim Data1 As New DataSet()
DataGridView1.DataSource = Data.Tables("cat")
Conn.Close()
Dim sqlCategories As String
sqlCategories = "SELECT * from savedoctors"
da = New OleDbDataAdapter(sqlCategories, Conn)
da.Fill(ds, "savedoctors")
Return
End Sub
Date :
2011-03-25 13:52:28
By :
watcharop
4. ในโปรแกรมควรมี Error Handler (Try Box) อยู่ด้วย เพราะถึงเก่งแค่ไหน อย่าหวังว่าจะพ้น Bug
ซึ่งทำไม่ยาก
Try
.... เขียนโค้ดที่นี่
....
....
Catch Ex As Exception
Messagebox.Show(ex.Message)
End Try
Date :
2011-03-25 13:56:40
By :
watcharop
5. ฟอร์มที่หน้าตาเหมือนกัน ไม่ควรเขียนแยกเป็น 2 ฟอร์ม
จะทำให้เขียนโปรแกรมยุ่งยาก
เท่าที่สังเกต EDIT_LISTDOCTOR_ORDER_NAME.vb กับ EDIT_LISTDOCTOR_ORDER_BYCLINIC.vb
ต่างกันที่การค้นหามั้ง
EDIT_LISTDOCTOR_ORDER_BYCLINIC.vb (Partial)
Private Sub cmd_Searchdata_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_Searchdata.Click
Dim sqlSearch As String
Dim dr As OleDbDataReader
Dim dt As DataTable
ComSearch = New OleDbCommand()
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
sqlSearch = "Select * from savedoctors where clinic_doctor like '%" & txt_Searchdata.Text.Trim() & "%' order by id_doctor asc"
With ComSearch
ComSearch.CommandType = CommandType.Text
ComSearch.CommandText = sqlSearch
ComSearch.Connection = Conn
ComSearch.Parameters.AddWithValue("clinic_doctor", OleDbType.VarChar).Value = txt_Searchdata.Text.Trim()
dr = .ExecuteReader()
If dr.HasRows Then
dt = New DataTable()
dt.Load(dr)
DataGridView1.DataSource = dt
cmd_Searchdata.Enabled = False : cmd_EDIT.Enabled = False
cmd_EXIT.Enabled = False : txt_Searchdata.Enabled = False
Else
MessageBox.Show("ไม่พบข้อมูล")
txt_Searchdata.Clear()
txt_Searchdata.Enabled = True
txt_Searchdata.Focus()
End If
End With
End With
dr.Close()
Return
End Sub
Date :
2011-03-25 14:02:48
By :
watcharop
แค่นี้พอเนอะ พอเป็นไอเดีย
Date :
2011-03-25 14:03:39
By :
watcharop
อยากจะเสริมเลยว่าหากจะจัดเก็บ error เพื่อเป็นกิจลักษณะ
ควรออกแบบระบบ log ไว้ตั้งแต่การออกแบบค่ะ
เพื่อจะแนบเข้าไปในทุกส่วนของ application
ไม่ต้องไปสิเรียสขนาดทำตาม design pattern
เพียงแค่เป็นเครื่องมือชั้นดีของการตรวจจับและแจ้งจุดบกพร่องได้ค่อนข้างดีค่ะ
ในกรณีที่ advance เราอาจจะทำเป็น aggressive app
คือในตัว app จะทำการแจ้งตัว error กลับมาที่ทีมพัฒนาก่อนที่ลูกค้าจะเห็น
เพื่อทำการปรับแก้เสียก่อน เพราะเป็นไปไม่ได้ที่จะไม่มีข้อบกพร่องใดๆเลย
ตามกฏของเมอร์ฟี่ย์ค่ะ
Date :
2011-03-25 14:42:23
By :
สาวเอ๋อ เอ๋อเหรอ เอ๋อมากมาย
อ่าเดียวขอ จัดการกับมันแปปเดียวรายงานผล
Date :
2011-03-25 14:49:25
By :
angelrings0
คุณหางอึ่ง เข้ามา set ในนี้นะเหรอครับ อันนี้ไม่เข้าใจจิง ๆ ผมเข้ามาในนี้มันก้อเป็นแบบนี้อยู่แล้ว
มันสามารถ เรียกใช้ได้ด้วยเหรอ คับ อันนี้ไม่รู้จิง ผมไม่เคยใช้อะ แล้วตอนเรียกใช้ผมต้องเรียกในส่วนนี้อย่างไร งง จริง ๆ
strConn = My.Setting.AppStringConnection
Date :
2011-03-25 15:18:26
By :
angelrings0
ไม่มี My.Setting.NEWMarketingConnectionString เหรอ??
หรือไม่ก็ต้องผ่าน xxx อะไรอีกสักอย่างก่อนถึง NEWMarketingConnectionString
(My.Setting.XXXX.NEWMarketingConnectionString)
Date :
2011-03-25 15:26:17
By :
watcharop
แปปนะครับ พอจะเข้าใจละ ขอลองแปป เดียวให้คำตอบคับ
Date :
2011-03-25 15:35:03
By :
angelrings0
ok ครับเจอละ ต้องใส่แบบ นี้เลย
strConn = My.Settings.NEWMarketingConnectionString
ใช่ได้ครับ คุณหางอึ่ง
แต่ต้องไปเพิ่มใน viwe code แบบนี้ใช้ป่าวครับ หรือว่าผิด ผมเดา เอานะคับ
Namespace My
'This class allows you to handle specific events on the settings class:
' The SettingChanging event is raised before a setting's value is changed.
' The PropertyChanged event is raised after a setting's value is changed.
' The SettingsLoaded event is raised after the setting values are loaded.
' The SettingsSaving event is raised before the setting values are saved.
Partial Friend NotInheritable Class MySettings
Dim strConn As String = "provider=Microsoft.Jet.oleDb.4.0; Data Source=..\\NEWMarketing.mdb"
End Class
End Namespace
Date :
2011-03-25 15:43:27
By :
angelrings0
OK ครับ คุณหางอึ่ง ได้แล้วครับ สวดยอดเลย สามารถทำได้แล้ว ขอบคุณคับ
แก้ไขแค่ data base แค่ที่เดียวได้หมดเลยครับ แล้วไปเปลี่ยนconnection ใน from ให้เป็น
strConn = My.Settings.NEWMarketingConnectionString
ก้อทำ Install ได้แล้วครับ ไม่รู้เลย ว่าต้องทำแบบนี้ให้มันรู้จัก ฐานข้อมูลก่อน ขอบคุณคับ ได้ความรู้เพิ่มอีก แจ่มเลย
Date :
2011-03-25 15:55:07
By :
angelrings0
โอ๊ว แอบลุ้นตั้งนานในที่สุดก็ได้ ยินดีด้วยครับ อยากช่วยเหมือนกันครับ แต่บางเรื่องก็รู้เท่าที่รู้ครับ
Date :
2011-03-25 16:08:41
By :
webmaster
ครับ ขอบคุณคับ ที่ช่วย แล้ว ให้คำแนะนำ ครับ คุณ win
ถามต่ออีกหน่อย คับแล้วเราจะให้ 1 เครื่องเป็น server แล้วให้เครื่องอื่น ๆ
เข้ามาใช้โปรแกรม อย่างไร และต้อง set อะไรอีกบ้างนะครับ อันนีัเป็นปัญหาอยู่
เพราะตอนนี้ data base access ได้แล้ว แต่ data base ที่เป็น mysql นะครับ มันต้อง
ทำอย่างงั้ยให้เป็นตัว install นะครับ ยังไม่เข้าใจวิธีทำเลย ช่วยแนะนำหน่อยคับ
ประวัติการแก้ไข 2011-03-25 16:13:14
Date :
2011-03-25 16:10:28
By :
angelrings0
เท่าที่เข้าใจก็คือ โปรแกรมจะต้องลงที่ Client ทุกตัวครับ ส่วน Database ลงเครื่องเดียวครับ ส่วน Client ก็เรียกผ่าน MySQL ผ่าน IP ครับ ก็น่าจะได้แล้วครับ
Date :
2011-03-25 16:19:58
By :
webmaster
อ้อครับ พอเป็นแนวทางครับ เดียวต้องลองก่อน แล้วในส่วน ของ โปรแกรมจะลองทำดูนะครับคุณ win ขอบคุณครับ
Date :
2011-03-25 16:37:06
By :
angelrings0
Load balance : Server 02