 |
|
แจก : ระบบขายสินค้า พัฒนาด้วยภาษา C# ฐานข้อมูล Access |
|
 |
|
|
 |
 |
|
  
|
 |
 |
 |
 |
Date :
2016-05-18 08:25:19 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เปลี่ยน Path ของรูปด้วยนะครับ
|
 |
 |
 |
 |
Date :
2016-05-18 09:11:33 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ไขไม่ได้แล้วอะครับ ระบบแจ้งว่า กระทู้ เกิน 7 วันแก้ไขไม่ได้ T^T ขอโทษด้วยนะครับ
|
 |
 |
 |
 |
Date :
2016-06-16 03:27:15 |
By :
bigsuntat |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมขยายวันให้แล้วครับ เข้าไปเปลี่ยนรูปด้วยครับ
|
 |
 |
 |
 |
Date :
2016-06-16 09:19:04 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Database อยู่ที่ไหนคะรบกวนผู้รู้ช้วยแจ้งด้วยค่ะ หาไม่เจอจริงๆ   
|
 |
 |
 |
 |
Date :
2016-06-17 23:31:08 |
By :
เมย์ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
bin/debug ครับ
|
 |
 |
 |
 |
Date :
2016-06-18 03:47:17 |
By :
bigsuntat |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โหลดแล้วทำไม เป็น C#
|
 |
 |
 |
 |
Date :
2016-06-20 15:14:54 |
By :
ตุ้ม |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอเบอร์โทรติดต่อผู้เขียนโปรแกรมหน่อยครับ inbox มาก็ได้
ถ้าทดสอบระบบใช้งานได้ดี ผมจะเขียนระบบงานซ่อม + เข้าไปอีก อาจจะต้องขอคำปรึกษา ผมมีค่าขนมให้เล็กๆ น้อยๆ ครับ ขอบคุณครับ
|
 |
 |
 |
 |
Date :
2016-06-20 15:15:06 |
By :
prachaporn |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โหลดไม่ได้ คร้าบบ
|
 |
 |
 |
 |
Date :
2016-06-20 20:39:01 |
By :
keegee1995 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอโทษครับ ผิด แก้เป็น C# แล้วครับผม
|
 |
 |
 |
 |
Date :
2016-06-20 22:51:09 |
By :
bigsuntat |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พอดีมีงานด่วนเข้ามาเป็นระบบ POS Supper Express
คุณสมบัติของโปรแกรม
Quote:ระบบงาน POS ร้านขายเมล็ดพันธ์และปุ๋ยเคมีและอุปกรณ์ทางการเกษตร
โจทย์ที่ยาก คือการ Down size ให้เล็กที่สุดและใช้งานง่ายที่สุด
สิ่งที่มี
-หน้าจอ Login (มีเป็นพิธี)
-ขายหน้าร้าน
--- ขายเงินสด/ขายเงินเชื่อ
------ยิงบาร์โค๊ด คิดเงิน พิมพ์ใบเสร็จอย่างย่อ
-รายงานไม่เกิน 4 ตัว
สิ่งที่ไม่มีแน่นอน
-ไม่รองรับลิ้นชักเก็บเงิน
-ไม่รองรับทัชสกรีน (Touch screen)
-ตัดสต๊อคทันที ไม่รองรับยังไม่ตัดสต๊อค
-ไม่รองรับภาษีขาย และคำนวณต้นทุน
-ไม่รองรับ รับ/คืน เงินมัดจำ
-etc.. อทิเช่น ไม่รองรับกะ, Stand Alone.
แผนการพัฒนา
1. ระยะเวลา 3 วัน
2. Database SQLite
3. Windows Form (ในอนาคตจะเป็น Web App)
4. ภาษาที่ใช้พัฒนา VB.NET (อาจจะมี C# ปะปนบ้าง)
...
วันนี้เป็นวันแรกที่เริ่มพัฒนา



Source Code ตัวอย่าง
usrCtrlTextBox.vb
Code (VB.NET)
Imports System.Drawing
Imports System.Windows.Forms
'
<ToolboxBitmap(GetType(TextBox))> _
Public Class usrCtrlTextBox : Inherits TextBox
Public Enum TextBoxDisplayManager As Byte
TextCharacter = 0
TextNumber = 1
TextInteger = 2
End Enum
Public Enum TextBoxDisplayPrecisionScale As Byte
None = 0
One = 1
Two = 2
Tree = 3
Four = 4
Five = 5
Six = 6
Seven = 7
Eight = 8
Nine = 9
Ten = 10
End Enum
Public Enum TextBoxDisplayOnEnterMoveNext As Byte
Yes
No
End Enum
Public Enum TextBoxDisplayIsEnabledBinding As Byte
Yes
No
End Enum
#Region " Variables "
Private _DisplayManager As TextBoxDisplayManager
Private _DisplayPrecisionScale As TextBoxDisplayPrecisionScale
Private _DisplayOnEnterMoveNext As TextBoxDisplayOnEnterMoveNext
Private _DisplayIsEnabledBinding As TextBoxDisplayIsEnabledBinding
#End Region
#Region " Properties "
<System.ComponentModel.DefaultValue(GetType(TextBoxDisplayManager), "TextCharacter"), System.ComponentModel.Category("Appearance")> _
Public Property DisplayManager() As TextBoxDisplayManager
Get
Return _DisplayManager
End Get
Set(ByVal value As TextBoxDisplayManager)
_DisplayManager = value
If Me._DisplayManager = TextBoxDisplayManager.TextNumber Then
MyBase.TextAlign = HorizontalAlignment.Right
End If
End Set
End Property
<System.ComponentModel.DefaultValue(GetType(TextBoxDisplayPrecisionScale), "None"), System.ComponentModel.Category("Appearance")> _
Public Property DisplayPrecisionScale() As TextBoxDisplayPrecisionScale
Get
Return _DisplayPrecisionScale
End Get
Set(ByVal Value As TextBoxDisplayPrecisionScale)
_DisplayPrecisionScale = Value
If Me._DisplayManager = TextBoxDisplayManager.TextNumber Then
MyBase.TextAlign = HorizontalAlignment.Right
Dim dblSubMybaseText As Double
If String.IsNullOrEmpty(MyBase.Text) OrElse Not IsNumeric(MyBase.Text) Then
dblSubMybaseText = 0
Else
dblSubMybaseText = CDbl(MyBase.Text)
End If
Select Case Me._DisplayPrecisionScale
Case TextBoxDisplayPrecisionScale.One
MyBase.Text = String.Format("{0:N1}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Two
MyBase.Text = String.Format("{0:N2}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Tree
MyBase.Text = String.Format("{0:N3}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Four
MyBase.Text = String.Format("{0:N4}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Five
MyBase.Text = String.Format("{0:N5}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Six
MyBase.Text = String.Format("{0:N6}", dblSubMybaseText)
'More...
'More...
'More...
Case TextBoxDisplayPrecisionScale.None
MyBase.Text = String.Format("{0:N0}", dblSubMybaseText)
End Select
End If
End Set
End Property
<System.ComponentModel.DefaultValue(GetType(TextBoxDisplayOnEnterMoveNext), "Yes"), System.ComponentModel.Category("Appearance")> _
Public Property DisplayOnEnterMoveNext() As TextBoxDisplayOnEnterMoveNext
Get
Return _DisplayOnEnterMoveNext
End Get
Set(ByVal value As TextBoxDisplayOnEnterMoveNext)
_DisplayOnEnterMoveNext = value
End Set
End Property
<System.ComponentModel.DefaultValue(GetType(TextBoxDisplayIsEnabledBinding), "Yes"), System.ComponentModel.Category("Appearance")> _
Public Property DisplayIsEnabledBinding() As TextBoxDisplayIsEnabledBinding
Get
Return _DisplayIsEnabledBinding
End Get
Set(ByVal value As TextBoxDisplayIsEnabledBinding)
_DisplayIsEnabledBinding = value
End Set
End Property
#End Region
#Region " Constructor "
Public Sub New()
End Sub
#End Region
'Protected Overrides Sub OnBindingContextChanged(ByVal e As System.EventArgs)
' MyBase.OnBindingContextChanged(e)
'End Sub
Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
If Me._DisplayManager = TextBoxDisplayManager.TextNumber Then
If e.KeyChar < "0" Or e.KeyChar > "9" Then
If AscW(e.KeyChar) = Keys.Back Then
e.Handled = False
Else
If e.KeyChar = "." And MyBase.Text.Contains(".") = False Then
e.Handled = False
ElseIf e.KeyChar = "-" And MyBase.Text.Contains("-") = False Then
e.Handled = False
Else
e.Handled = True
End If
End If
End If
ElseIf Me._DisplayManager = TextBoxDisplayManager.TextInteger Then
If e.KeyChar < "0" Or e.KeyChar > "9" Then
If AscW(e.KeyChar) = Keys.Back Then 'Backspace
e.Handled = False
Else
e.Handled = True
End If
End If
End If
If AscW(e.KeyChar) = Keys.Enter AndAlso _DisplayOnEnterMoveNext = TextBoxDisplayOnEnterMoveNext.Yes Then
SendKeys.Send("{TAB}")
End If
End Sub
Protected Overrides Sub OnEnter(ByVal e As System.EventArgs)
MyBase.SelectionStart = 0
MyBase.SelectionLength = MyBase.Text.Length
End Sub
Protected Overrides Sub OnValidating(ByVal e As System.ComponentModel.CancelEventArgs)
If Me._DisplayManager = TextBoxDisplayManager.TextNumber Then
Dim dblSubMybaseText As Double
If String.IsNullOrEmpty(MyBase.Text) OrElse Not IsNumeric(MyBase.Text) Then
dblSubMybaseText = 0
Else
dblSubMybaseText = CDbl(MyBase.Text)
End If
Select Case Me._DisplayPrecisionScale
Case TextBoxDisplayPrecisionScale.One
MyBase.Text = String.Format("{0:N1}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Two
MyBase.Text = String.Format("{0:N2}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Tree
MyBase.Text = String.Format("{0:N3}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Four
MyBase.Text = String.Format("{0:N4}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Five
MyBase.Text = String.Format("{0:N5}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Six
MyBase.Text = String.Format("{0:N6}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Seven
MyBase.Text = String.Format("{0:N7}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Eight
MyBase.Text = String.Format("{0:N8}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Nine
MyBase.Text = String.Format("{0:N9}", dblSubMybaseText)
Case TextBoxDisplayPrecisionScale.Ten
MyBase.Text = String.Format("{0:N10}", dblSubMybaseText)
Case Else
MyBase.Text = String.Format("{0:N0}", dblSubMybaseText)
End Select
End If
End Sub
'ปิดเสียง ปี๊ด เมื่อกดปุ่ม Enter
'Private Sub SetBeepOff(ByVal senser As Control, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
' If e.KeyCode = Keys.Enter Then
' e.SuppressKeyPress = True
' SendKeys.Send("{Tab}")
' End If
'End Sub
'Protected Overrides Sub OnBindingContextChanged(ByVal e As System.EventArgs)
' MyBase.OnBindingContextChanged(e)
'End Sub
End Class
More...
More...
More...
ปล. ค่าพัฒนาในเบื้องต้น 10,000 บาท (จ่ายเงินสดเต็มจำนวนล่วงหน้า)
|
 |
 |
 |
 |
Date :
2016-06-21 16:04:15 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@คุณ bigsuntat
ผมรับงานมาตั้งแต่ต้นเดือน ตอนแรกผมกะว่าจะจ้างทำ
แต่หาโปรแกรมเมอร์ที่รู้ใจยาก (ผมเป็นคนเอาแต่ใจ)
วันนี้ผมลองทำเอง (ตอนเริ่มต้นขลุกขลักพอสมควร สักพักหนึ่งก็ลื่นไหล)
ถ้าไม่มีอะไรผิดพลาด วันพรุ่งนี้น่าจะเสร็จสมบูรณ์ ผมหวังให้เป็นเช่นนั้น
ปล. ในการ Down size โปรแกรมลงมา ผมมีเหตุผลและความจำเป็นหลายฯอย่าง อธิบายไปมันก็ยืดยาวครับ
ผมวางโครงและ Layout เสร็จหมดแล้ว เหลือแต่เขียนโค๊ดอีกนิดหน่อย

|
 |
 |
 |
 |
Date :
2016-06-21 21:53:56 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO15 อันนี้คือ Source Code ของจริงในหน้าจอหลักที่ผมใช้
Code (VB.NET)
Public Class frmMain
'
'initial variable and object
'
Private tmpUserControl As New UserControl()
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim usrCtrFrmMain As New usrCtrMain
btnFirstArticle.ForeColor = Color.Cyan
btnFirstArticle.ForeColor = Color.Cyan
btnFirstArticle.FlatAppearance.BorderSize = 1
btnFirstArticle.Focus()
pnlMenuDetail.Controls.Add(usrCtrFrmMain)
usrCtrFrmMain.Dock = DockStyle.Fill
stsMessage.Text = btnFirstArticle.Text 'บทนำ
timerInterval.Enabled = True
timerInterval.Interval = 1000
stsDateTime.Text = String.Format("{0:dd MMMM yyyy HH:mm:ss}", Now)
btnClose.ForeColor = Color.White
stsUser.Text = "Admin" 'User Login
End Sub
'ออกจากโปรแกรม (ปุ่ม X ด้านบน)
Private Sub frmMain_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
EndProgram()
End Sub
'ออกจากโปรแกรม (คลิ๊กปุ่ม Close ด้านล่างซ้าย)
Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
EndProgram()
End Sub
Private Sub mainMenuControl_Enter(sender As Object, e As EventArgs) Handles btnCustomer.Enter, btnProduct.Enter, btnSales.Enter, btnMaster.Enter, btnAdmin.Enter, btnFirstArticle.Enter
Dim btnMenu As Button = DirectCast(sender, Button)
For Each ctrl As Control In pnlMenuMain.Controls
If TypeOf ctrl Is Button Then
CType(ctrl, Button).FlatAppearance.BorderSize = 0
ctrl.ForeColor = System.Drawing.Color.White
End If
Next
btnClose.ForeColor = System.Drawing.Color.White
pnlMenuDetail.Controls.Clear()
Select Case btnMenu.Name
Case "btnCustomer"
tmpUserControl = New usrCtrCustomer
Case "btnProduct"
tmpUserControl = New usrCtrProduct
Case "btnSales"
tmpUserControl = New usrCtrSales
Case "btnMaster"
'xxx
Case "btnAdmin"
'xxx
Case "btnFirstArticle"
tmpUserControl = New usrCtrMain
End Select
btnMenu.ForeColor = Color.Cyan
btnMenu.FlatAppearance.BorderSize = 1
picPrefix.Location = New Point(0, btnMenu.Location.Y + 10)
stsMessage.Text = btnMenu.Text
Try
pnlMenuDetail.Controls.Add(tmpUserControl)
tmpUserControl.Dock = System.Windows.Forms.DockStyle.Fill
Catch ex As Exception
'Logger
End Try
End Sub
Private Sub EndProgram()
Me.Dispose()
End
End Sub
End Class
|
 |
 |
 |
 |
Date :
2016-06-21 22:03:56 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO16
ตั้งใจจะเข้านอนตอนตี 4 แต่เมียบอกว่า "มันดึกแล้วนะ เข้านอนได้แล้ว"
--- ความตั้งใจและอุปสรรคมันมาพร้อมกันเสมอ
แก้ไขโค๊ด
บรรทัดที่ 10 มันเกินมาหนึ่งบรรทัด
บรรทัดที่ 36-41 เปลี่ยนเป็น LINQ + LAMPDA ดังนี้
Code (VB.NET)
pnlMenuMain.Controls.OfType(Of Button)().ToList().ForEach(Sub(x)
x.FlatAppearance.BorderSize = 0
x.ForeColor = Color.White
End Sub)
Good night
|
 |
 |
 |
 |
Date :
2016-06-21 23:06:37 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO16-17
ตื่นขึ้นมาแต่เช้า มานั่งเกลาโค๊ดเล่นฯ (เกลาไข่เล่นแล้วมันทั้งแสบมันทั้งเสียว วาบวาบวาบ)
Completed Source code
Code (VB.NET)
Public Class frmMain
'
'initial variable and object
'
Public strUserLoginCode As String = String.Empty
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
btnFirstArticle.ForeColor = Color.Cyan
btnFirstArticle.FlatAppearance.BorderSize = 1
btnFirstArticle.Focus()
pnlMenuDetail.Controls.Add(New usrCtrMain With {.Dock = DockStyle.Fill})
stsMessage.Text = btnFirstArticle.Text 'บทนำ
timerInterval.Enabled = True
timerInterval.Interval = 1000
stsDateTime.Text = String.Format("{0:dd MMMM yyyy HH:mm:ss}", Now)
btnClose.ForeColor = Color.White
stsUser.Text = strUserLoginCode '"Admin" User Login
End Sub
'ออกจากโปรแกรม (ปุ่ม X ด้านบน)
Private Sub frmMain_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
EndProgram()
End Sub
'ออกจากโปรแกรม (คลิ๊กปุ่ม Close ด้านล่างซ้าย)
Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
EndProgram()
End Sub
Private Sub mainMenuControl_Enter(sender As Object, e As EventArgs) Handles btnCustomer.Enter, btnProduct.Enter, btnSales.Enter, btnMaster.Enter, btnAdmin.Enter, btnFirstArticle.Enter
Dim btnMenu As Button = DirectCast(sender, Button)
pnlMenuMain.Controls.OfType(Of Button)().ToList().ForEach(Sub(x)
x.FlatAppearance.BorderSize = 0
x.ForeColor = Color.White
End Sub)
btnClose.ForeColor = System.Drawing.Color.White
pnlMenuDetail.Controls.Clear()
btnMenu.ForeColor = Color.Cyan
btnMenu.FlatAppearance.BorderSize = 1
picPrefix.Location = New Point(0, btnMenu.Location.Y + 10)
stsMessage.Text = btnMenu.Text
Try
pnlMenuDetail.Controls.Add(AddUserControlByName("usrCtr" & btnMenu.Name.Substring(3)))
pnlMenuDetail.Controls(0).Dock = DockStyle.Fill
Catch ex As Exception
'Logger
End Try
End Sub
'Used System.Reflection
Private Function AddUserControlByName(ByVal ctrlName As String) As Control
'POS == Root namespace (Project --> Property --> Application)
Return Activator.CreateInstance(System.Reflection.Assembly.GetExecutingAssembly.GetType("POS" & "." & ctrlName))
End Function
Private Sub EndProgram()
Me.Dispose()
End
End Sub
End Class
|
 |
 |
 |
 |
Date :
2016-06-22 08:43:08 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@คุณ TaoZaZa
ที่เห็นอยู่ในรูป คน/มนุษย์ เอามาปล่อยทิ้งทั้งนั้นครับ
แมว เป็นแมววัดผมจับเอามาเลี้ยง (บนบ้านยังมีอยู่อีกหลายตัว)
บางตัวก็มีคนเอามาปล่อยทิ้งเอาไว้หน้าบ้านของผม
หมา เป็นหมาวัดผมจับเอามาเลี้ยง (หน้าบานยังมีอีกหลายตัว)
บางตัวโดนรถชน บางตัวโดนคนตี จนขาหน้า/ขาหลังพิการ
ผมต้องทำกรงอย่างดี ทำล้อเข็นหมาพิการอย่างดีให้พวกมัน (ทุกคนทำได้ทั้งนั้นแต่มีเวลาทำกันทุกฯคนหรือไม่?)
ว่างฯ ผมจะถ่ายรูปมาให้ดูครับ
วกกลับมาเรื่องโปรแกรมมิ่ง สำหรับโปรแกรมเมอร์ การเขียนโปรแกรมมันไม่ยากหรอก แต่การเป็นศิลปินโปรแกรมมิ่ง
มันคงยากสำหรับใครบางคนแน่นอน
Update Program (ทุกฯอย่างมันอยู่ในหัวสมองของผมหมดรอเวลาเมื่อไหร่ผมถึงจะนำมันออกมาใช้เท่านั้นเอง)

|
 |
 |
 |
 |
Date :
2016-06-22 14:27:48 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Update Program แฟ้มประวัติลูกหนี้ (ลูกค้า)
Heading

Detail

Source code เทียบเท่าของจริง
Code (VB.NET)
Public Class usrCtrCustomer
Private bsCustomer As New BindingSource
Private Sub usrCtrCustomer_Load(sender As Object, e As EventArgs) Handles Me.Load
'C# Generic List of anonymous types
'var cboTestData = new[] { new { ID = "01", Name = "ลูกหนี้การค้า" },
' new { ID = "02", Name = "หน่วยงานราชการ" }
' };
Dim cboTestData = {New With {.ID = "00", Key .Name = "ไม่ระบุ"},
New With {.ID = "01", Key .Name = "ลูกหนี้การค้า"},
New With {.ID = "02", Key .Name = "หน่วยงานราชการ"},
New With {.ID = "03", Key .Name = "อื่นฯ"}
}
cboARTCode.DataSource = cboTestData
cboARTCode.DisplayMember = "Name"
cboARTCode.ValueMember = "ID"
Dim img As Image = Image.FromFile(Application.StartupPath & "\..\..\Images\WomanAlert.png")
Dim img2 As Image = Image.FromFile(Application.StartupPath & "\..\..\Images\WomanExtentSame.png")
Dim lstCust = {New With {.ARCode = "01", .ARName = "ABC", .ARAdd1 = "เชียงใหม่", .BackList = img, .ARCR = 30},
New With {.ARCode = "02", .ARName = "DEF", .ARAdd1 = "ลำปาง", .BackList = img2, .ARCR = 0},
New With {.ARCode = "03", .ARName = "GHK", .ARAdd1 = "ลำพูน", .BackList = img, .ARCR = 0},
New With {.ARCode = "04", .ARName = "XYT", .ARAdd1 = "สงขลา", .BackList = img, .ARCR = 90},
New With {.ARCode = "05", .ARName = "XYZ", .ARAdd1 = "ยะลา", .BackList = img, .ARCR = 0},
New With {.ARCode = "06", .ARName = "หมู", .ARAdd1 = "เชียงใหม่", .BackList = img, .ARCR = 30},
New With {.ARCode = "07", .ARName = "หมา", .ARAdd1 = "ลำปาง", .BackList = img, .ARCR = 0},
New With {.ARCode = "08", .ARName = "กา", .ARAdd1 = "ลำพูน", .BackList = img, .ARCR = 0},
New With {.ARCode = "09", .ARName = "ไก่", .ARAdd1 = "สงขลา", .BackList = img, .ARCR = 90},
New With {.ARCode = "10", .ARName = "แมว", .ARAdd1 = "ยะลา", .BackList = img, .ARCR = 0}
}.ToList()
bsCustomer.DataSource = lstCust
SetDGVInfo(bsCustomer)
End Sub
Private Sub SetDGVInfo(ByVal bs As BindingSource)
dgvCust.AutoGenerateColumns = False
Dim imgCol As New DataGridViewImageColumn
imgCol.HeaderText = String.Empty
imgCol.Width = 40
imgCol.ImageLayout = DataGridViewImageCellLayout.Zoom
dgvCust.Columns.Insert(0, imgCol)
dgvCust.DataSource = bs
dgvCust.Columns(0).DataPropertyName = "BackList"
dgvCust.Columns(1).DataPropertyName = "ARCode"
dgvCust.Columns(2).DataPropertyName = "ARName"
dgvCust.Columns(3).DataPropertyName = "ARAdd1"
dgvCust.Columns(6).DataPropertyName = "ARCR"
End Sub
Private Sub tsbAdd_Click(sender As Object, e As EventArgs) Handles tsbAdd.Click
Actions("A")
txtARCode.Enabled = True
txtARCode.Focus()
End Sub
Private Sub tsbEdit_Click(sender As Object, e As EventArgs) Handles tsbEdit.Click
If dgvCust.SelectedRows.Count = 0 Then
MessageBox.Show("กรุณาเลือกระเบียนในตารางด้านล่าง เพื่อแก้ไขข้อมูล", "คำเตือน", MessageBoxButtons.OK)
Exit Sub
Else
Actions("E")
txtARCode.Enabled = False
txtARName.Focus()
End If
End Sub
Private Sub tsbBack_Click(sender As Object, e As EventArgs) Handles tsbBack.Click
BacktoPanelHead()
End Sub
Private Sub BacktoPanelHead()
pnlDetail1.Visible = False
pnlHead.Visible = True
pnlDetail1.Dock = DockStyle.Bottom
pnlHead.Dock = DockStyle.Fill
End Sub
Private Sub dgvCust_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvCust.CellDoubleClick
Actions("E")
End Sub
Private Sub Actions(ByVal mode As String)
pnlDetail1.Visible = True
pnlHead.Visible = False
pnlDetail1.Dock = DockStyle.Fill
pnlHead.Dock = DockStyle.None
lblActions.Text = If(mode = "A", "เพิ่มข้อมูล", "แก้ไขข้อมูล")
If mode = "E" Then
Dim objARMas = DirectCast(bsCustomer, IEnumerable).OfType(Of Object)().ToList().Find(Function(c) c.ARCode = dgvCust.SelectedRows(0).Cells("ARCode").Value)
If objARMas IsNot Nothing Then
txtARCode.Text = objARMas.ARCode
txtARName.Text = objARMas.ARName
txtARAdd1.Text = objARMas.ARAdd1
cboARTCode._Text = "อื่นฯ"
cboARTCode._Key = "03"
cboARTCode.SelectedValue = "03"
End If
Else
'Reset All TextBox/ComboBox/etc...
mduControlManager.GetAllControl(pnlDetail1, GetType(WL_Controls.usrCtrlTextBox)).ToList().ForEach(Sub(x) DirectCast(x, WL_Controls.usrCtrlTextBox).ResetValue())
mduControlManager.GetAllControl(pnlDetail1, GetType(WL_Controls.usrCtrComboBox)).ToList().ForEach(Sub(x) DirectCast(x, WL_Controls.usrCtrComboBox).ResetValue())
End If
End Sub
Private Sub tsbSave_Click(sender As Object, e As EventArgs) Handles tsbSave.Click, tsbSaveClear.Click, tsbSaveClose.Click
Dim sd As ToolStripButton = DirectCast(sender, ToolStripButton)
Select Case ValidateData()
Case "ARCode"
txtARCode.Focus()
Exit Sub
Case "ARName"
txtARName.Focus()
Exit Sub
End Select
Select Case sd.Name.Substring(sd.Name.Length - 4)
Case "Save" 'Save
Case "lear" 'Save Clear
mduControlManager.GetAllControl(pnlDetail1, GetType(WL_Controls.usrCtrlTextBox)).ToList().ForEach(Sub(x) DirectCast(x, WL_Controls.usrCtrlTextBox).ResetValue())
mduControlManager.GetAllControl(pnlDetail1, GetType(WL_Controls.usrCtrComboBox)).ToList().ForEach(Sub(x) DirectCast(x, WL_Controls.usrCtrComboBox).ResetValue())
Case "lose" 'Save Close
BacktoPanelHead()
End Select
'
'Save to database
'
MessageBox.Show("บันทึกข้อมูลเรียบร้อยแล้ว")
End Sub
Private Sub txtARCode_KeyUp(sender As Object, e As KeyEventArgs) Handles txtARCode.KeyUp, txtARName.KeyUp
ValidateData()
End Sub
Private Sub txtARName_Leave(sender As Object, e As EventArgs) Handles txtARCode.Leave, txtARName.Leave
ValidateData()
End Sub
Private Function ValidateData() As String
lblARCodeRequire.Visible = If(txtARCode.Text.Trim().Equals(String.Empty), True, False)
lblARNameRequire.Visible = If(txtARName.Text.Trim().Equals(String.Empty), True, False)
Return If(lblARCodeRequire.Visible = True, "ARCode", If(lblARNameRequire.Visible = True, "ARName", String.Empty))
End Function
'ค้นหาข้อมูล
Private Sub btnSearchNormal_Click(sender As Object, e As EventArgs) Handles btnSearchaRCode.Click, btnSearchARName.Click
SearchNormal(DirectCast(sender, Button))
End Sub
'ค้นหาข้อมูล
Private Sub SearchNormal(ByVal btnS As Button)
Dim objARMas As List(Of Object)
'ทดสอบการค้นหา (ในคำ)
If btnS.Name.Substring(btnS.Name.Length - 4) = "Code" Then 'Search ARCode
objARMas = DirectCast(bsCustomer, IEnumerable).OfType(Of Object)().ToList().FindAll(Function(c) c.ARCode.Contains(txtSearchARCode.Text))
Else 'Search ARName
objARMas = DirectCast(bsCustomer, IEnumerable).OfType(Of Object)().ToList().FindAll(Function(c) c.ARName.Contains(txtSearchARName.Text))
End If
If objARMas IsNot Nothing Then
dgvCust.DataSource = Nothing
dgvCust.DataSource = New BindingSource With {.DataSource = objARMas}
End If
End Sub
End Class
mduControlManager.vb
Code (VB.NET)
'Find Recursive all controls
Public Function GetAllControl(ByVal ctrl As Control, t As Type) As IEnumerable(Of Control)
Dim _ctrl = ctrl.Controls.Cast(Of Control)()
Return _ctrl.SelectMany(Function(x) GetAllControl(x, t)).Concat(_ctrl).Where(Function(y) y.GetType() = t)
End Function
|
 |
 |
 |
 |
Date :
2016-06-25 08:34:27 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO22 ข้อสังเกตุ
1. ข้อมูลหลัก (Master Data) อทิเช่น ข้อมูลฝ่าย, ข้อมูลแผนก, ข้อมูลหน่วยนับ, etc...
มักจะมีโครงสร้างดังนี้ xxxCode DescriptionThai, DescriptionEnglish, Remark
ผมคงใช้ฟอร์มในการ เพิ่ม/แก้ไข/ลบ/etc.. ไม่เกิน 1 ฟอร์มแน่นอน (ทำอย่างไร? มันไม่ใช่เป็นหน้าที่ของผม)
เผลอฯ 0 ฟอร์ม
2. ปุ่มค้นหาขั้นสูง
ผมคงใช้ฟอร์ม ไม่เกิน 1 ฟอร์มแน่นอน (ทำอย่างไร? มันไม่ใช่เป็นหน้าที่ของผม)
เผลอฯ 0 ฟอร์ม
3. ยังมีข้อสังเกตุอีกมากมาย ที่เป็นประโยชน์ (ตาถึงก็มองเห็น ตาถั่วก็เป็นภาระเพื่อนร่วมงาน)
...
...
...
Good Luck.
|
 |
 |
 |
 |
Date :
2016-06-25 10:19:47 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO22 ผมลืมให้ User Control ComboBox
usrCtrlComboBox.vb
Code (VB.NET)
Imports System.Windows.Forms
Imports System.ComponentModel
Imports System.Drawing
<ToolboxBitmap(GetType(ComboBox))> _
Public Class usrCtrComboBox : Inherits ComboBox
Public Enum TextBoxDisplayIsEnabledBinding As Byte
Yes
No
End Enum
Public Enum TextBoxDisplayOnEnterMoveNext As Byte
Yes
No
End Enum
Public Enum TextBoxDisplayValidateOnLeave As Byte
Yes
No
End Enum
Private _DisplayIsEnabledBinding As TextBoxDisplayIsEnabledBinding
Private _DisplayOnEnterMoveNext As TextBoxDisplayOnEnterMoveNext
Private _DisplayValidateOnLeave As TextBoxDisplayValidateOnLeave
Private _DisplayValidateWarningText As String = "กรุณาป้อนข้อมูลให้ถูกต้อง"
Private _mKey As String
Private _mText As String
<System.ComponentModel.DefaultValue(GetType(TextBoxDisplayIsEnabledBinding), "Yes"), System.ComponentModel.Category("Appearance")> _
Public Property DisplayIsEnabledBinding() As TextBoxDisplayIsEnabledBinding
Get
Return _DisplayIsEnabledBinding
End Get
Set(ByVal value As TextBoxDisplayIsEnabledBinding)
_DisplayIsEnabledBinding = value
End Set
End Property
<System.ComponentModel.DefaultValue(GetType(TextBoxDisplayOnEnterMoveNext), "Yes"), System.ComponentModel.Category("Appearance")> _
Public Property DisplayOnEnterMoveNext() As TextBoxDisplayOnEnterMoveNext
Get
Return _DisplayOnEnterMoveNext
End Get
Set(ByVal value As TextBoxDisplayOnEnterMoveNext)
_DisplayOnEnterMoveNext = value
End Set
End Property
<System.ComponentModel.DefaultValue(GetType(TextBoxDisplayValidateOnLeave), "Yes"), System.ComponentModel.Category("Appearance")> _
Public Property DisplayValidateOnLeave() As TextBoxDisplayValidateOnLeave
Get
Return _DisplayValidateOnLeave
End Get
Set(ByVal value As TextBoxDisplayValidateOnLeave)
_DisplayValidateOnLeave = value
End Set
End Property
<System.ComponentModel.DefaultValue(GetType(String), "กรุณาป้อนข้อมุลให้ถูกต้อง"), System.ComponentModel.Category("Appearance")> _
Public Property DisplayValidateWarningText() As String
Get
Return _DisplayValidateWarningText
End Get
Set(ByVal value As String)
_DisplayValidateWarningText = value
End Set
End Property
'2014-06-12 เอาไว้เก็บ Key
<Bindable(False), Category("Appearance"), DefaultValue("Text"), Localizable(True), Description("Display Decimal for Number")>
Property _Key() As String
Get
Return _mKey
End Get
Set(ByVal Value As String)
_mKey = Value
End Set
End Property
'2014-06-12 เอาไว้เก็บ Description
<Bindable(False), Category("Appearance"), DefaultValue("Text"), Localizable(True), Description("Display Decimal for Number")>
Property _Text() As String
Get
Return _mText
End Get
Set(ByVal Value As String)
_mText = Value
End Set
End Property
'กดปุ่ม Enter ให้เลื่อนไปช่องถัดไป (Next Control)
'
Protected Overrides Sub OnKeyPress(e As KeyPressEventArgs)
If (DisplayOnEnterMoveNext = TextBoxDisplayOnEnterMoveNext.Yes) Then
If (AscW(e.KeyChar) = Keys.Enter) Then
SendKeys.Send("{TAB}")
End If
End If
'MyBase.OnKeyPress(e)
End Sub
Protected Overrides Sub OnValidating(e As CancelEventArgs)
If DisplayValidateOnLeave = TextBoxDisplayValidateOnLeave.Yes Then
If Me.Text <> String.Empty Then
Dim index = Me.FindString(Me.Text)
If index = -1 Then
If Me._Key <> String.Empty Then
Me.SelectedValue = Me._Key
If Me._Text <> String.Empty Then
Me.Text = Me._Text
End If
e.Cancel = False
Else
e.Cancel = True
MessageBox.Show(DisplayValidateWarningText, "คำเตือน", MessageBoxButtons.OK)
End If
Else
Me.SelectedIndex = index
End If
End If
End If
'MyBase.OnValidating(e)
End Sub
Public Sub ResetValue()
MyBase.Text = String.Empty
MyBase.SelectedValue = String.Empty
MyBase.SelectedIndex = -1
_Key = String.Empty
_Text = String.Empty
End Sub
End Class
ปล. เอาไปใช้งานจริง (จนรวยเป็นเถ้าแก่) อย่าลืมให้เครดิต หน้าฮี ด้วยล่ะ
|
 |
 |
 |
 |
Date :
2016-06-25 11:35:03 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Update Program Login.vb (หน้าจอ Login)
Code (VB.NET)
Public Class Login
Private Sub btnChangePwd_Click(sender As Object, e As EventArgs) Handles btnChangePwd.Click
'ตรวจสอบจากฐานข้อมูล (ยังไม่ได้ทำ)
'
Dim f As New frmLoginChangePassword
f.strFrmPwd = txtPwd.Text
f.ShowDialog()
End Sub
Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
Me.Dispose()
End
End Sub
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
Static Dim xCount As Integer = 0
Dim lstUser = msrUsers.GetList(txtUserID.Text.Trim()) 'ตอนจัดเก็บไม่ยอมให้มีช่องว่างต้นคำและท้ายคำ/รหัสผ่านก็เช่นเดียวกัน (ยกเว้นมีช่องว่าง(รู)ตรงกลาง ยอมได้)
'ตรวจสอบ User ID (Type = String)
If lstUser.Count > 0 Then
'ตรวจสอบรหัสผ่าน Class Crypter เขียนด้วย C++ (วิศวะคอมฯเขียนให้ฟรี+55555)
'เข้ารหัสผ่าน 2 ชั้น (สูงกว่า Basic นิดหน่อย แต่ก็พอใช้งานได้ดีระดับหนึ่ง)
If (String.Format("{0}", lstUser(0).Password) = Crypter.DESEncrypt(Crypter.DESEncrypt(txtPwd.Text.Trim()))) Then
Me.Hide() 'Hide Login form
Dim f As New frmMain
f.ShowDialog()
Else
xCount += 1
MessageBox.Show("ท่านป้อนรหัสผู้ใช้งานไม่ถูกต้อง กรุณาป้อนใหม่อีกครั้ง (ครั้งที่ : " & xCount & ")", "ข้อความเตือน", MessageBoxButtons.OK, MessageBoxIcon.Warning)
txtPwd.Text = String.Empty
txtPwd.Focus()
Return
End If
Else
MessageBox.Show("ท่านป้อนรหัสผู้ใช้งานไม่ถูกต้อง กรุณาป้อนใหม่อีกครั้ง", "ข้อความเตือน", MessageBoxButtons.OK, MessageBoxIcon.Warning)
txtUserID.Text = String.Empty
txtPwd.Text = String.Empty
txtUserID.Focus()
Return
End If
End Sub
Private Sub btnChangeConn_Click(sender As Object, e As EventArgs) Handles btnChangeConn.Click
'จะทำเมื่อไหร่ก็ย่อมได้ แต่ยังไม่ได้ทำ
'app.config
'<?xml version="1.0" encoding="utf-8" ?>
'<configuration>
' <system.diagnostics>
' <sources>
' <!-- This section defines the logging configuration for My.Application.Log -->
' <source name="DefaultSource" switchName="DefaultSwitch">
' <listeners>
' <add name="FileLog"/>
' <!-- Uncomment the below section to write to the Application Event Log -->
' <!--<add name="EventLog"/>-->
' </listeners>
' </source>
' </sources>
' <switches>
' <add name="DefaultSwitch" value="Information" />
' </switches>
' <sharedListeners>
' <add name="FileLog"
' Type = "Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
' initializeData="FileLogWriter"/>
' <!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
' <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
' </sharedListeners>
' </system.diagnostics>
' <system.data>
' <DbProviderFactories>
' <remove invariant="System.Data.SQLite"/>
' <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
' type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
' </DbProviderFactories>
' </system.data>
' <connectionStrings>
' <add name="Mssql" connectionString="Data Source=YOUR-PC;Initial Catalog=myDataBase;User ID=sa;Password=1234" providerName="System.Data.SqlClient" />
' <add name="Oracle" connectionString="Server=192.168.1.1;Database=myDataBase;Uid=myUsername;Pwd=myPassword;" providerName="System.Data.OracleClient" />
' <add name="MySQL" connectionString="Server=192.168.1.1;Database=myDataBase;Uid=myUsername;Pwd=myPassword;" providerName="MySql.Data.MySqlClient" />
' <add name="SQLite" connectionString="Data Source=..\...\App_Data\myDatabase_V3.s3db ;Version=3 ;UTF8Encoding=True;Pooling=True;Max Pool Size=100;" providerName="System.Data.SQLite" />
' <add name="MsAccess" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|myDataBase.accdb ;Jet OLEDB:Database Password=1234;" providerName="System.Data.OleDb" />
'... FireBird RDBMS
'... etc...
' </connectionStrings>
' <appSettings>
' <add key="LoggerFolder" value="..\..\Logger" />
' <add key="LoggerFileName" value="..\..\appLog.txt" />
' <add key="CurentProduct" value="Demo" />
' <add key="ProductName" value="POSExpress 1.0.0" />
' <add key="ConnectionStringEncrypt" value="A154273BF2464F4E" />
' <add key="ConnectionString" value="EB4BE3F2D06F5CC873B2C82C8BC034C04B2F4ABC592AFB46ABC33BF919EE02729742B42202B5B10128131010FB11A0F49BA59AF24FC07A44DA70AC41250923EF045B855B802EAF02769B274B42A00E5D" />
' <!--System.Data.OleDb-->
' <add key="RDBMSType" value="SQLite" />
' <add key="providerName" value="System.Data.SQLite" />
' <add key="DateFormat" value="dd{0}MM{1}yyyy" />
' <add key="TimeFormat" value="{0}:{1}:{2}" />
' <add key="GL_Report_LoadDemoData" value="False" />
' <add key="IC_Report_LoadDemoData" value="True" />
' <add key="AR_Report_LoadDemoData" value="True" />
' <add key="AP_Report_LoadDemoData" value="True" />
' <add key="PO_Report_LoadDemoData" value="True" />
' <add key="SO_Report_LoadDemoData" value="True" />
'...
'...
'...
' </appSettings>
'</configuration>
End Sub
End Class
ปล. โลกนี้มันมีอะไรแปลกฯ ภารโรงอยากเป็น ผ.อ. และในทางกลับกัน ผ.อ.อยากเป็นภารโรง
|
 |
 |
 |
 |
Date :
2016-06-25 21:29:10 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO25 ตัวอย่างผลลัพธ์ของ Source code

ปล. จริงฯแล้วมันต้องเตือนว่า ท่านป้อนรหัสผ่านไม่ถูกต้อง (ผมพิมพ์ดีดได้ 1,000 คำ/นาที) บางครั้งก็ Copy & Paste +55555
|
 |
 |
 |
 |
Date :
2016-06-25 22:04:50 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
นี่มันแชมป์ หน้าฮี พิมพ์ดีดนี่
|
 |
 |
 |
 |
Date :
2016-06-26 21:48:26 |
By :
bigsuntat |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@bigsuntat
www.thaicreate.com ผม Login ด้วย User Name : หน้าฮี ไม่ได้ มันฟ้องว่า "รหัสผ่านไม่ถูกต้อง"
--- เดาเอาว่า : ผมจำระหัสผ่านผิด หรืออาจเป็นไปได้ว่า Administrator ไม่อนุญาติ (จะด้วยสาเหตุใดฯก็ตาม)
เล่าเรื่องจริงให้ฟังนะ ตอนแรกผมกะว่า "แค่ดาวไซต์โปรแกรมลงมา (ลดขนาดของโปรแกรมให้เล็กลง)"
3 วันก็เสร็จและรับเงินและจบ
แต่ตอนนี้ไม่ใช่แล้ว (ผมมองเห็นช่องทาง) คุณก็ลองคิดตามและลองเดาดูเล่นฯ ว่าผมกำลังจะทำอะไร?
--- โปรแกรมระดับเดียวกันหรือที่เหนือกว่า ผมมองออกหมด (ในท้องตลาดไม่มีตัวไหนไปถึง GL (General Ledger))
------ มันไม่ง่ายสำหรับใครบางคน (บริษัทเล็กฯบางบริษัท)
|
 |
 |
 |
 |
Date :
2016-06-28 19:46:53 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO28 และย้อนกลับไป #NO13
--- การปิดเปิดลิ้นชัก มันก็ไม่ใช่เรื่องยากสำหรับผม
--- เซแว้นมีเครืองคิดเงินสดหลายเครื่อง (ในแต่ละสาขา)
----- มันก็ไม่ใช่เรื่องยากสำหรับผม (ง่ายฯเหมือนผายลม)
...
...
...
ผมเป็นคนที่เอาหัวใจและจิตวิญญาณนำคำว่า "ธุรกิจ"
--- ด้วยเหตุนี้ภรรยาของผมจึงบ่น(ด่า) ว่า โปรแกรมเมอร์คนอื่นเขาร้วยรวย
---- แต่ผัวกู "จ้นจน รวยแต่เขือ ดีนะที่มันเล็กไม่อย่างนั้นฉันลำบาก" (อันนี้เรื่องจริงนะ)
คุณ(และเพื่อนของคุณ) มีเวลาว่างหรือไม่?
--- จากรูปภาพด้านล่าง และจากความต้องการ Down size Program ลงมา
------ ผมให้คุณเดาว่าผมกำลังทำอะไรอยู่?

ปล. ผมมีงานที่ต้องทำอีกมากมาย ( นับจากปัจจุบันไปอีก 3 ปีก็ไม่จบ)
|
 |
 |
 |
 |
Date :
2016-06-28 20:00:52 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO28-29
คุณลองสังเกตุดูว่า "ผมซ่อนอะไรเอาไว้ข้างหลัง" เท่าที่เห็น
--- ประวัติลูกค้า
--- ประวัติสินค้า
--- ขายสด/ขายเชื่อ
--- Master Data
--- Administrators
--- Exit Program
ปล. ผมเป็นคนคิดได้ร้อยแปดพันเก้า กลับมาคิดอีกทีมันก็ไม่เหมือนเดิม
|
 |
 |
 |
 |
Date :
2016-06-28 20:16:50 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO30
ในเชิงโปรแกรมมิ่ง
--- อะไรที่ซ้ำฯกัน ผมจะไม่สนเป็นรอบที่สอง
ในเชิงชีวิตประจำวัน (น้องเมีย)
--- ผมมักจะให้ความสำคัญกับมันเสมอ

|
 |
 |
 |
 |
Date :
2016-06-28 20:31:19 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำตัวเหมือนดี แต่ผิดศีลข้อ 3 เอวัง
|
 |
 |
 |
 |
Date :
2016-06-29 08:19:32 |
By :
bigsuntat |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ดันครับเผื่อใครไม่รู้ว่าแจกอันนี้ด้วย
|
 |
 |
 |
 |
Date :
2016-08-03 16:24:55 |
By :
bigsuntat |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
รู้อะไรก็ต้องรู้จริง และมองเผื่อความจริง ย้อนหลัง 100 ปี และ
มองเผื่อข้างหน้าไปอีกอย่างน้อย 100 ปี
สองข้อความข้างบน เผื่อคนสมองตัน หมายความว่า
จะสร้างเขื่อนขึ้นมา มันต้องคำนวณ ปริมาณน้ำฝน
--- ย้อนกลับไปในอดีตอีก 100 ปี
--- และต้องคิดเผื่อแผ่ไปในอนาคตอีก 100 ปี
โปรแกรมเมอร์ ใครฯ ก็เป็นได้ แต่คำว่า ศิลปินโปรแกรมเมอร์ หายากมากฯ (คิดไม่เหมือนใคร)
|
 |
 |
 |
 |
Date :
2016-08-04 16:45:17 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Database อยู่ไหนครับ รบกวนอธิบายให้เข้าใจหน่อยได้ไหมครับ ?
|
 |
 |
 |
 |
Date :
2018-02-13 22:31:59 |
By :
ต๊ะ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มีคนทำหลายๆ ฟอร์มแล้วโยงหน้า main เหมือนผมเลย
อยากจะย้ายไปอยู่หน้า main แล้วใส่ใน tab control บ้าง ก็ขี้เกียจแก้โค้ดแล้ว
|
 |
 |
 |
 |
Date :
2018-02-14 10:15:42 |
By :
nk4ever |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
System.InvalidOperationException: 'The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.'
มันขึ้นแบบนี้ทำไงงค่ะพี่
|
 |
 |
 |
 |
Date :
2021-02-20 11:37:41 |
By :
ืnote |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
รหัสผ่านอะไรหรอครับ
|
 |
 |
 |
 |
Date :
2021-07-21 13:58:59 |
By :
พรพร |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|