วันอังคารที่ 22 ตุลาคม พ.ศ. 2556

stored procedure วนรอบข้อมูลในตาราง A แล้ว insert ลงตาราง B ได้หลายๆเรคคอร์ด


Stored Procedure

เมื่อใช้ stored procedure ในครั้งแรก ทุกคนจะตื่นเต้นเสมอ คำกล่าวนี้เป็นจริง

แบบที่ 1 
CREATE PROCEDURE dbo.SelectViewInsertToTable
(
     ใส่ตัวแปรพารามิเตอร์ที่จะรับผ่านฟอร์มเข้ามา
)
AS
BEGIN
   INSERT INTO TableBB(b1,b2,b3)
   select a1,a2,a3 from View_AA  where a4='0'
END

GO

วันอาทิตย์ที่ 20 ตุลาคม พ.ศ. 2556

แสดงข้อความ "ยังไม่มีข้อมูล จากการค้นหา"


Private Sub LinqDataSource1_Selected(sender As Object, e As LinqDataSourceStatusEventArgs) Handles LinqDataSource1.Selected
        If e.TotalRowCount > 0 Then
            Label1.Text = "เลือกรายการเพื่อแสดงรายละเอียด"
        Else
            Label1.Text = "ยังไม่มีข้อมูล จากการค้นหา"
        End If
End Sub

Operator '>=' incompatible with operand types 'Int32?' and 'String'

เมื่อผมเขียนโค้ดแบบนี้


Function findData(Hour As Int32)
        Dim sql As New StringBuilder
        sql.Append("DiffDate >= @DiffDate")

        LinqDataSource1.WhereParameters.Clear()
        LinqDataSource1.Where = sql.ToString

        LinqDataSource1.WhereParameters.Add("DiffDate", Hour)
        LinqDataSource1.DataBind()
End Function

กรรมเก่าก็บันดาลให้พบกับ ข้อผิดพลาดแบบนี้
Operator '>=' incompatible with operand types 'Int32?' and 'String'


ดูสิว่าจะจัดการกับมันได้หรือเปล่า ?
.
.
.
ในที่สุดโค้ดแบบผู้บ่าวไทบ้านก็ได้ผล

แบบที่  1 ระบุ DbType.UInt32

Function findData(Hour As Int32)
        Dim sql As New StringBuilder
        sql.Append("DiffDate >= @DiffDate")

        LinqDataSource1.WhereParameters.Clear()
        LinqDataSource1.Where = sql.ToString

        LinqDataSource1.WhereParameters.Add("DiffDate", DbType.UInt32, CStr(Hour))
        LinqDataSource1.DataBind()
End Function

javascript: กล่องข้อความยืนยันการลบข้อมูล (Confirm message in javascript in asp.net)


แบบที่ 1 ASP.NET
btnDel.Attributes.Add("Onclick", "return confirm('คุณแน่ใจหรือไม่ที่จะยกเลิกรายการ #Order:" & idProject & " ?');")

วันเสาร์ที่ 19 ตุลาคม พ.ศ. 2556

javascript: previous page asp.net (ปุ่มย้อนกลับ)


แบบที่ 1 
<a href='javascript:history.back()' >Go Back to Previous Page</a>

แบบที่ 2

btnBack.Attributes.Add("onClick", "javascript:history.back(); return false;")

GridView: FindControl

แบบที่ 1 RowDataBound :
Private Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim lblFullname As Label = CType(e.Row.FindControl("lblFullname"), Label)    
End If
End Sub

แบบที่ 2 RowCommand:

Private Sub GridView1_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GridView1.RowCommand
Dim gvRow As GridViewRow = CType(CType(e.CommandSource, Control).NamingContainer, GridViewRow)
Dim index As Integer = gvRow.RowIndex
Dim row As GridViewRow = GridView1.Rows(index)
Dim lblProjectID As Label = CType(row.FindControl("projectID"), Label)

If e.CommandName = "Select" Then
   ...
End If
End Sub


แบบที่ 3 RowCommand:

Private Sub GridView1_RowCommand(sender As Object, e As GridViewCommandEventArgsHandles GridView1.RowCommand

Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim Row As GridViewRow = GridView2.Rows(index)
Dim lblProjectID As Label = CType(row.FindControl("projectID"), Label)

If e.CommandName = "Select" Then
   ...
End If
End Sub

แบบที่ 4 RowCommand:

Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim projectID As HiddenField = GridView1.Rows(index).FindControl("projectID")


แบบที่ 5 btnOK_Click:

Protected Sub btnOK_acceptJob_Click(sender As Object, e As EventArgs) Handles btnOK_acceptJob.Click
Dim hidregUserTran As HiddenField = CType(GridView1.Rows(1).FindControl(("hidregUserTran")), HiddenField)
End Sub


วันศุกร์ที่ 18 ตุลาคม พ.ศ. 2556

DetailsView1.FindControl


เนื่องจาก DetailsView แสดงข้อมูลแต่ละฟิลด์แบ่งเป็นหน้าอยู่แล้วซึ่งแตกต่างจาก GridView ที่แสดงเป็นแถว ดังนั้นจึงไม่ต้องระบุ index ของแถว

ตัวอย่าง

Dim projectID As HiddenField = CType(DetailsView1.FindControl("projectID"), HiddenField)

วันพฤหัสบดีที่ 17 ตุลาคม พ.ศ. 2556

Stored Procedure: ส่งค่าพารามิเตอร์จาก ASP.NET ไปยัง StoredProcedure ในฐานข้อมูล SQL Server


1. อันดับแรกต้องสร้าง Stored Procedure ในฐานข้อมูล SQL Server ก่อน

CREATE PROCEDURE [dbo].[project] (@value as text )
AS
BEGIN

INSERT INTO sendMail (projectID)
VALUES (@value);

END

1. ชุดคำสั่งที่จะส่งค่าพารามิเตอร์เข้าไปใน Stored Procedure


Dim ret As String = String.Empty
Dim connectString As String = ConfigurationManager.ConnectionStrings.Item(("ConnectionString")).ToString
Dim conn As SqlClient.SqlConnection = New SqlClient.SqlConnection(connectString)

Using cmd As SqlClient.SqlCommand = New SqlClient.SqlCommand("dbo.project", conn)
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Parameters.Add("@value", SqlDbType.Text).Value = "ทดสอบ"
    cmd.Connection.Open()
    ret = cmd.ExecuteScalar()
    cmd.Connection.Close()
End Using

วันอาทิตย์ที่ 13 ตุลาคม พ.ศ. 2556

LinQ กำหนดเงื่อนไขในการค้นหา


Dim sql As New StringBuilder
sql.Append("not(projectID=@projectID) ")

If m_orderType.SelectedValue > 0 Then
    sql.Append("&& project_typeID=@project_typeID ")
End If
If ddlm_subtype.SelectedValue > 0 Then
    sql.Append("&& project_subType=@project_subType ")
End If
If ddlm_ServiceLang.SelectedValue > 0 Then
    sql.Append("&& proServiceLang=@proServiceLang ")
End If


LinqDataSource1.WhereParameters.Clear()
LinqDataSource1.Where = sql.ToString

LinqDataSource1.WhereParameters.Add("projectID", "0")
LinqDataSource1.WhereParameters.Add("project_typeID", m_orderType.SelectedValue)
LinqDataSource1.WhereParameters.Add("project_subType", ddlm_subtype.SelectedValue)
LinqDataSource1.WhereParameters.Add("proServiceLang", ddlm_ServiceLang.SelectedValue)
LinqDataSource1.DataBind()

วันศุกร์ที่ 11 ตุลาคม พ.ศ. 2556

LinQ to GridView แสดงผลข้อมูลโดยการกำหนดเงื่อนไขใน GridView ด้วย LinQ to class

สิ่งสำคัญในคำสั่ง LinQ จะต้องใช้เมธอด .ToList 

Dim db As New DataClassesRegisterViewDataContext

        Dim result = (From p In db.View_registerApplicationCheckGrids _
                      Where (p.app_permiss = "0")
                      Select p.regUserName, p.fullname, p.regEmail, _
                      p.app_sendtest, p.app_permiss, p.app_curDate).ToList

        Try
            GridView1.DataSource = result
            GridView1.DataBind()

            result = Nothing
            db.Dispose()
            GC.SuppressFinalize(db)
            GC.Collect()
            Return True
        Catch ex As Exception
            result = Nothing
            db.Dispose()
            GC.SuppressFinalize(db)
            GC.Collect()
        End Try

การใช้ WebClient สำหรับเรียก URL

Dim _url As String = " https :// www . MyDomain . com /?q=ทดสอบ " Dim wc As New System . Net . WebClient () wc . Encodin...