 |
|
ช่วยที่ครับ ขึ้น error Additional information: Failed to convert parameter value from a String to a Int32. |
|
 |
|
|
 |
 |
|
น่าจะมี Parameters ที่เป็น INT แต่คุณส่ง String เข้าไปครับ
|
 |
 |
 |
 |
Date :
2018-12-08 20:09:33 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
บรรทัดที่ 415 CInt(txtQty.Text)
และจริงฯ ควรจะใช้แบบนี้
Code (VB.NET)
Public Shared Sub AddWithValue(ByRef cmd As DbCommand, ByVal pName As String, ByVal pValue As Object)
Dim Param = cmd.CreateParameter()
Param.ParameterName = pName
Param.Value = pValue
cmd.Parameters.Add(Param)
End Sub
ตัวอย่างการใช้งาน
Code (VB.NET)
''' <summary>
''' ลบข้อมูลครั้งละหลายฯระเบียน
''' </summary>
''' <param name="lstCmd"></param>
''' <param name="values"></param>
''' <remarks></remarks>
Public Shared Sub SetDeleteCommand(ByRef lstCmd As List(Of lstDbCommand), ByVal values As List(Of msrB_S_Rate))
For Each r In values
c = New lstDbCommand
c.CmdText = "Delete From B_S_RATE Where RECORD_NUMBER = @RECORD_NUMBER"
c.CmdParameter = New List(Of DbParameter) From {BuildParameter("@RECORD_NUMBER", r.RECORD_NUMBER)}
lstCmd.Add(c)
Next
End Sub
''' <summary>
''' ลบข้อมูลครั้งละหนึ่งระเบียน
''' </summary>
''' <param name="lstCmd"></param>
''' <param name="value"></param>
''' <remarks></remarks>
Public Shared Sub SetDeleteCommand(ByRef lstCmd As List(Of lstDbCommand), ByVal value As msrB_S_Rate)
c = New lstDbCommand
c.CmdText = "Delete From B_S_RATE Where RECORD_NUMBER = @RECORD_NUMBER"
c.CmdParameter = New List(Of DbParameter) From {BuildParameter("@RECORD_NUMBER", value.RECORD_NUMBER)}
lstCmd.Add(c)
End Sub
|
 |
 |
 |
 |
Date :
2018-12-08 21:30:01 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ฟังก์ชั่น BuildParameter
--- รู้ไว้ใช่ว่า ใส่บ่าแบกหาม คิดแบบนี้ความสุขที่เคยมีมันก็คงจะไม่ลดลงไปเหมือนสายน้ำ
Code (VB.NET)
''' <summary>
''' Build Parameter
''' </summary>
''' <param name="pName"></param>
''' <param name="pValue"></param>
''' <param name="pvdStr"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function BuildParameter(ByVal pName As String, pValue As Object, Optional ByVal pvdStr As String = "") As DbParameter
Dim dbParam As DbParameter = Nothing
If pvdStr = String.Empty Then
pvdStr = xxxProviderName
End If
Select Case pvdStr
Case "System.Data.SqlClient"
'2555-01-12 แก้ไข .Value = pValue --> If (pValue Is Nothing, DBNull.Value, pValue)
dbParam = New SqlParameter() With {.ParameterName = pName, .Value = If(pValue Is Nothing, DBNull.Value, pValue)}
Case "System.Data.OracleClient", "Oracle.DataAccess.Client", "Oracle.ManagedDataAccess.Client"
'dbParam = New OracleParameter() With {.ParameterName = pName, .Value = pValue}
'2561-02-07 แก้ไข .Value = pValue --> If (pValue Is Nothing, DBNull.Value, pValue)
dbParam = New OracleParameter() With {.ParameterName = pName, .Value = If(pValue Is Nothing, DBNull.Value, pValue)}
Case "System.Data.MySqlClient"
dbParam = New MySqlParameter() With {.ParameterName = pName, .Value = pValue}
Case "FirebirdSql.Data.FirebirdClient"
dbParam = New FbParameter() With {.ParameterName = pName, .Value = If(pValue Is Nothing, DBNull.Value, pValue)}
Case "System.Data.SQLite"
'2558-07-24 แก้ไข .Value = pValue --> If (pValue Is Nothing, DBNull.Value, pValue)
dbParam = New SQLiteParameter() With {.ParameterName = pName, .Value = pValue}
Case "System.Data.OleDb"
dbParam = New OleDbParameter With {.ParameterName = pName, .Value = pValue}
Case "System.Data.Odbc"
dbParam = New OdbcParameter With {.ParameterName = pName, .Value = pValue}
Case "System.Data.VFPClient" 'FastDBClient (www.codeplex.com)
'
Case "System.Data.DB2Client"
'
Case Else
'Not Implement yet.
End Select
Return dbParam
End Function
|
 |
 |
 |
 |
Date :
2018-12-08 21:38:39 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แถมให้อีกอันหนึ่ง For All RDBMS
--- รู้ไว้ใช่ว่าใส่บ่าแบกหาม
Code (VB.NET)
''' <summary>
''' Fixed Parameter for All RDBMS
''' </summary>
''' <param name="strSQL"></param>
''' <param name="pvdStr"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function FixedParam(ByVal strSQL As String, Optional ByVal pvdStr As String = "") As String
If pvdStr = String.Empty Then
pvdStr = xxxProviderName
End If
'http://msdn.microsoft.com/en-us/library/30wbz966(v=vs.110).aspx
'Change (@\w*) TO (@\w+) 2010-08-20
'* = Zero or more
'+ = One or more
'? = Zero or one
'"(@\w+^')"
'^ Match the beginning of the input string.
Select Case pvdStr
Case "System.Data.SqlClient", "System.Data.MySqlClient", "System.Data.DB2Client", "FirebirdSql.Data.FirebirdClient", "System.Data.SQLite"
Return strSQL
Case "System.Data.OracleClient", "Oracle.ManagedDataAccess.Client", "Oracle.DataAccess.Client"
strSQL = Regex.Replace(strSQL, "(@\w+)", Function(m) ":" & m.Value.Replace(" ", "").Substring(1)) ':paramName
Case "System.Data.OleDb", "System.Data.Odbc", "System.Data.VFPClient"
strSQL = Regex.Replace(strSQL, "(@\w+)", Function(m) "?")
Case Else
strSQL = Regex.Replace(strSQL, "(@\w+)", Function(m) "Select/Insert/Update #Error DbHelper")
End Select
'DB2 ใช้ได้ทั้งสองแบบ @ หรือ ? (Named parameters & Positioned Parameters)
'http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/com.ibm.swg.im.dbclient.adonet.ref.doc/doc/DB2CommandClassParametersProperty.html
Return strSQL
End Function
|
 |
 |
 |
 |
Date :
2018-12-08 21:46:20 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (C#)
/// <summary>
/// ''' Fixed Parameter All RDBMS
/// ''' </summary>
/// ''' <param name="strSQL"></param>
/// ''' <param name="pvdStr"></param>
/// ''' <returns></returns>
/// ''' <remarks></remarks>
public static string FixedParam(string strSQL, string pvdStr = "")
{
if (pvdStr == string.Empty)
pvdStr = xxxProviderName;
// http://msdn.microsoft.com/en-us/library/30wbz966(v=vs.110).aspx
// Change (@\w*) TO (@\w+) 2010-08-20
// * = Zero or more
// + = One or more
// ? = Zero or one
// "(@\w+^')"
// ^ Match the beginning of the input string.
switch (pvdStr)
{
case "System.Data.SqlClient":
case "System.Data.MySqlClient":
case "System.Data.DB2Client":
case "FirebirdSql.Data.FirebirdClient":
case "System.Data.SQLite":
{
return strSQL;
//break;
}
case "System.Data.OracleClient":
case "Oracle.ManagedDataAccess.Client":
case "Oracle.DataAccess.Client":
{
strSQL = Regex.Replace(strSQL, @"(@\w+)", m => ":" + m.Value.Replace(" ", "").Substring(1)); // :paramName
break;
}
|
 |
 |
 |
 |
Date :
2018-12-08 21:50:20 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Convert.ToDouble(txtQty.text)
|
 |
 |
 |
 |
Date :
2018-12-09 01:17:41 |
By :
nutpopo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
CInt("0" + Trim(txtQty.text));
อ่าน error message บันทัด 3
|
 |
 |
 |
 |
Date :
2018-12-09 09:34:01 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันเปลี่ยน error ไปเป็นอีก ตัว ก็เช็ค field เช็ค type ให้ดีครับ error ก็บอกไว้อยู่
|
 |
 |
 |
 |
Date :
2018-12-09 11:19:45 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เกี่ยวสิครับ 55555 invalid ไงครับ หาไม่เจอ
|
 |
 |
 |
 |
Date :
2018-12-09 13:06:05 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คงต้อง debug แต่ละบันทัด ดูค่าในแต่ละ object ว่ามันมีค่าอะไรบ้าง อ้างอิงถูกหรือเปล่า
|
 |
 |
 |
 |
Date :
2018-12-09 13:47:45 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช่ครับ เพราะ ตัวแปรข้างหลัง มันเป็นค่าว่าง "" ไม่สามารถแปลงเป็น interger ได้
เลยเอา 0 ไปไว้ข้างหน้า ก็จะเป็น "0"+"" ก็จะได้ "0" แปลงค่าแล้วก็จะได้ 0
ถ้า ข้างหลังมีค่า "1" ก็จะเป็น "0"+"1" ก็จะได้ "01" แปลงค่าแล้วก็จะได้ 1
|
 |
 |
 |
 |
Date :
2018-12-09 15:21:26 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้ว ไอ้ qty.text มันทำไมถีงไม่มีข้อมูลล่ะครับ
ใส่ "0" เพื่อเอาไว้คำนวณเท่านั้น แค่ค่าจริงๆ มันอยู่ใน qty.text คุณใส่อะไรไว้ มันถีงมีค่าเป็น 0 อันนี้ผมไม่รู้
ก็บอกให้ลอง debug ดูทีละบันทัด จะได้รู้ qty.Text มีค่าเป็นอะไร
อ้อลืมไปครับ vb CInt("0" & qty.Text) ใช้ & ต่อ string ไม่ได้ใช้ + เขียน c# จนชิน
|
 |
 |
 |
 |
Date :
2018-12-09 16:27:37 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช่ครับ
แต่ควรเช็ค ตอนคำนวณ มากกว่าครับ เพิ่มปุ่ม Add เข้าไป
|
ประวัติการแก้ไข 2018-12-09 19:09:16 2018-12-09 19:10:28
 |
 |
 |
 |
Date :
2018-12-09 19:07:23 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@ท่าน Chaidhanan และ @ท่าน อื่นฯ ที่มีความรู้และความสามารถ
จากหัวข้อกระทู้ที่ #132765 หัวข้อ "Win App C# สอบถามเรื่อง DataManager ใน ListControl"
มีก็ดี ไม่มีก็หามาให้ได้ Result = ตัวเลขหกหลัก
พอมีไหมครับ ด่วนฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯฯ
@nancom1
--- ข้อสงสัยของคุณ ยืนเยี่ยวยังยากกว่าเสียอีก คุณดีวิธีคิดของผมนะ
------ จำนวนหน่วยของสินค้า ใหญ่ X กลาง X เล็ก
ยกตัวอย่างเช่น 1 กล่อง X 100 แผง X 1,000 เม็ด
สมมุติว่าซื้อ 5 กล่อง
--- จะได้ 5 กล่อง X 100 แผง = 500 แผง ---> แปลงเป็นหน่วยย่อยที่สุด(แตด) = 500,000 เม็ด
คุณดูดีดีในสิ่งที่ผมเคยคิด/ผมกำลังทำ
Code (JavaScript)
//
//Namespace in JavaScript GlobalVar.XXX
///
GlobalVar = {};
(function(gv) {
/**
* @param {number} radius The radius of the circle.
* @return {number}
* @description Determines the area of a circle that has the specified radius parameter.
*/
gv.func = function (radius) {
return 69.2345;
};
/** @description วิธีคำนวณต้นทุน 1-FIFO, 2-LIFO, 3-Average, 4-Moveing, more... (FEFO-First Expired First Out)*/
gv.costType = 1;
/** @description วิธีบันทึกบัญชี 1=Perpetual, 2=Pereodic*/
gv.GL_Type = 1 ;
}(GlobalVar));
|
 |
 |
 |
 |
Date :
2018-12-16 14:43:18 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พวกมั่วนิ่ม อาศัยบุญเก่า (ทุกฯคนลับนอกคมในมั่วนิ่มว่าเป็นครูบาอาจารย์) จริงบ้างเท็จบ้าง แต่ส่วนใหญ่ร้อยละ 99.99 " ของปลอมทั้งนั้น "
Code (JavaScript)
//onkeypress="return integerOnly();"
function integerOnly(obj) {
var keyCode = (document.all) ? event.keyCode : event.which;
return (keyCode >= 48 && keyCode <= 57);
}
ปล. +55555
|
 |
 |
 |
 |
Date :
2018-12-16 15:12:45 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@nancom1 จาก #NO20 ของคุณ
คุณกำลังเรียนรู้ ผมเข้าใจดี และสิ่งนี้อาจเป็นกำลังใจให้คุณก็อาจเป็นไปได้เหมือนกัน
รูปภาพด้านล่าง ผมแกะโครงสร้างโปรแกรมของคนอื่นเขา (ทุกฯโปรแกรมที่ผมสนใจ)
--- หวังว่าคุณคงได้กำลังใจและมีความพยายามให้มากกว่าเดิม
การตรวจสอบความถูกต้องของข้อมูลก็เหมือนที่คุณ Chaidhanan บอกเอาไว้นั่นแหละ
หมายความว่า ไม่จำเป็นก็ไม่ต้องตรวจสอบ ส่วนใหญ่แล้วจะตรวจสอบตอนที่จะบันทึกข้อมูล
ลงไปใน ดาต้าเบส/ฐานข้อมูล เช่น SQLServer/MySQL/Oracle/etc... นั่นแหละ

+-x/ Field Code == ProductCode ขัดตาและขัดใจผมจริงฯ
--- ต่อให้ตั้งชื่อฟิวด์ว่าอะไร ผมก็แกะได้หมดอยู่ดี และอ่านทางออกหมด (เสือ VS สิงห์)
|
 |
 |
 |
 |
Date :
2018-12-16 20:01:18 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อันนี้เป็นหน้าจอที่ผมทำเอาไว้อ้างอิง เฉยเฉยเฉย
อะไรที่ไม่ใช่สาระสำคัญผมตัดออกให้หมด เกลี้ยงเหมือนหอยไร้ขน
จากรูปภาพด้านล่าง วงกลมแดงฯ ผมตรวจสอบความถูกต้องของข้อมูลเบื้องต้น ป้อนได้เฉพาะตัวเลขเท่านั้น
และจำกัดจำนวนทศนิยมที่ป้อนเข้าไป (สูงสุดป้อนได้ 2 หลัก)
Code (JavaScript)
function numberOnly(obj) {
var keyCode = (document.all) ? event.keyCode : event.which;
if (obj.value.indexOf('.') != -1 && keyCode == 46) {
return false;
}
if (obj.value.indexOf('-') != -1 && keyCode == 45) {
return false;
}
if (obj.value.indexOf('+') != -1 && keyCode == 43) {
return false;
}
if (keyCode >= 48 && keyCode <= 57 || keyCode == 8 || keyCode == 46 || keyCode == 16 || keyCode == 9 || keyCode == 37 || keyCode == 43 || keyCode == 45) {
return true;
}
return false;
//}
}
Code (XML)
<input type="text" id="txtTotalPrice" class="myTextBoxXS text-right" onkeypress="return numberOnly(this);" onblur="this.value=formatCurrency6996(this.value, 2);" />

สิ่งที่ผมเหนือกว่าโปรแกรมที่ใช้ตามท้องตลาดทั่วฯไป นั่นก็คือ ผมรู้ระบบบัญชี (ต้นทุนผลิต แบบไหนก็ว่ากันไป)
--- ชื้อมาขายไป <---> คลัง <---> บัญชี/การเงิน ผมแอบลง
Dr/Cr (เดบิต/เครติด) เอาไว้ข้างหลังเรียบร้อยแล้ว
ถามจริงฯเหอะ ระบบ HIS ในเมืองไทยมันจะมีสักกี่โปรแกรมกันเชียว+55555
+55555
|
 |
 |
 |
 |
Date :
2018-12-16 20:24:31 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

|
 |
 |
 |
 |
Date :
2018-12-16 20:33:54 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อันนี้เป็นโครงสร้างตารางของโปรแกรมบัญชีอันดับหนึ่งในเมืองไทย อีกยาวนาน (แจ๋วจริงฯ)

|
 |
 |
 |
 |
Date :
2018-12-16 20:44:43 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|