Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > ไม่เข้าใจ Code ครับ คือผมไปเอาของคนอื่นมาใช้นะครับ แต่ว่าไม่เข้าใจว่ามันหมายความว่ายังไงอะครับ



 

ไม่เข้าใจ Code ครับ คือผมไปเอาของคนอื่นมาใช้นะครับ แต่ว่าไม่เข้าใจว่ามันหมายความว่ายังไงอะครับ

 



Topic : 036385



โพสกระทู้ ( 394 )
บทความ ( 0 )



สถานะออฟไลน์




คือผมไปเอาของคนอื่นมาใช้นะครับ แต่ว่าไม่เข้าใจว่ามันหมายความว่ายังไงอะครับ ช่วยแปลให้หน่อยนะครับ
คือผมตั้งใจจะทำให้มัน Run id ตัวสุดท้ายของ table ที่ต้องการเพิ่มข้อมูลขึ้นมาเองอะครับ User จะได้ไม่ต้องไปนั่งหาว่าใส่ข้อมูลไปที่ id เท่าไหรแล้ว แล้วก็ไปเจอ function AutoGenerateRun ที่รุ่นพี่คนไหนไม่รู้ทำไว้ แต่ว่าดูแล้วงงๆ อะครับ แปลได้ไม่หมด เลยเอาไปประยุกต์ใช้ แล้วยังไม่ได้ตามที่ต้องการ

Code (VB.NET)
' อันนี้ Code AutoGenerateRun นะครับ
Private Sub AutoGenerateRun()
        Dim sqlTmp As String = ""
        Dim comTmp As SqlCommand = New SqlCommand
        Dim drTmp As SqlDataReader
        Dim tmpID As String = ""

        Dim FirstID As Integer = 0
        Dim LastID As Integer = 0

        sqlTmp = "SELECT TOP 1 sid FROM supplier " 
        sqlTmp &= " ORDER BY sid DESC"    'อันนี้ผมเข้าใจว่าดึงข้อมูล sid สุดท้ายออกมา

        With Conn
            If .State = ConnectionState.Open Then .Close()
            .Open()
        End With

        Try
            With comTmp
                .CommandType = CommandType.Text
                .CommandText = sqlTmp
                .Connection = Conn
                drTmp = .ExecuteReader()
                drTmp.Read()

                tmpID = CStr(drTmp.Item("sid"))    ' เอาค่า sid ที่อ่านได้เปลี่ยนเป็น string แล้วใส่ใน tmpID
                LastID = CInt(StringFromRight(tmpID, 2)) 'สงใสตรงนี้อะครับ งง ว่ามันหมายความว่ายังไง
                LastID = LastID + 1
                txts_id.Text = LastID.ToString("SP000")
                drTmp.Close()
            End With
        Catch
            txts_id.Text = "SP001"
        End Try

    End Sub


Code (VB.NET)
' อันนี้ function StringFromRight ที่ AutoGenerateRun เรียกใช้
Public Function StringFromRight(ByVal strTmp As String, ByVal strLength As Integer) As String
        If (strLength > 0 And strTmp.Length >= strLength) Then
            Return strTmp.Substring(strTmp.Length - strLength, strLength)
        Else
            Return strTmp
        End If
    End Function
' ผมดู function StringFromRight นี้หลายรอบแล้วอะครับ แต่ว่าก็ยังแปลไม่ออกว่า AutoGenerateRun เอาไปใช้ทำอะไรอะครับ




Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-12-30 22:33:05 By : Nameless View : 1516 Reply : 5
 

 

No. 1



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ขออธิบายการทำงานของ function AutoGenerateRun() แบบมึนๆ นะ


  • 1. Query ข้อมูลจากฐานข้อมูล ให้เลือกค่าที่มากที่สุดของ sid จาก supplier มาหนึ่งค่า แล้วเอาค่าที่ได้ป้อนใส่ตัวแปรที่ชื่อว่า tmpID

  • 2. ด้วยเหตุที่ว่า tmpID มันไม่เก็บแต่ตัวเลขอย่างเดียว มันดันมีตัวอักษรติดว่าติด 2 ตัว ดังนั้นถ้าเราต้องการ index ที่มากกว่าที่สุด เราจำเป็นต้องตัดตัวอักษรเหล่านั้นออกไปให้เหลือแต่ตัวเลขอย่างเดียว

  • 3. การทำให้เหลือแต่ตัวเลขอย่างเดียว ก็เลยต้องใช้ function StringFromRight(tmpID, 2) มาช่วย โดยฟังก์ชั่นนี้จะทำการ ตัดตัวอักษรทางขวาไปจำนวน 2 ตัว ทำให้เหลือเพียงตัวเลข 3 ตัว

  • 4. นำอักษรตัวเลขที่ได้แปลงเป็น int เก็บไว้ที่ตัวแปร LastID

  • 5. เอา LastID ไปบวก 1 แล้วแปลงกลับเป็น string ด้วย format "SP000" สมมติ LastID = 006 มันจะได้ "SP006" ออกไป แล้วเอาไปแสดงที่ txts_id








Date : 2009-12-31 00:08:42 By : tungman
 


 

No. 2

Guest


ดึง sid ล่าสุดมาจาก database ครับ
sqlTmp = "SELECT TOP 1 sid FROM supplier "
sqlTmp &= " ORDER BY sid DESC"

แปลงเป็น String เก็บที่ tmpID สมมุต sid = SP007 นะครับ
tmpID = CStr(drTmp.Item("sid"))

ส่งไปตัดคำว่า SP ออกด้วย Function StringFromRight จะเหลือ 007 แล้วแปลงเป็นตัวเลข เก็บที่ LastID
LastID = CInt(StringFromRight(tmpID, 2))

นำ 007 +1 ก็จะได้ 008 แล้วแปลงเป็นตัวอักษรโดยใส่ Fomat เป็น SP ข้างหน้าก็จะได้ SP008 ครับ แล้วแสดงที่ Text
LastID = LastID + 1
txts_id.Text = LastID.ToString("SP000")

สำหรับ Function StringFromRight นะครับ
จากที่ส่งมา StringFromRight(tmpID, 2) สมมุติ tmpID เป็น SP007


strTmp = SP007
strTmp.Length = 4 นับจาก S เริ่มที่ 0
strLength = 2

Public Function StringFromRight(ByVal strTmp As String, ByVal strLength As Integer) As String
If (strLength > 0 And strTmp.Length >= strLength) Then
Return strTmp.Substring(strTmp.Length - strLength, strLength) // 4-2,2 จะได้ Substring(2,2) ครับ
Else
Return strTmp
End If
End Function

ค่าที่ได้จะเหลือเฉพาะ 007 ครับ

ประมาณนี้ผิดพลาดประการใดขออภัยด้วยครับ
Date : 2009-12-31 14:30:00 By : KohDev
 

 

No. 3



โพสกระทู้ ( 100 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Hi5

ทำไมชื่อผมมันไม่ชึ้นหว่า
Date : 2009-12-31 14:35:32 By : KohDev
 


 

No. 4



โพสกระทู้ ( 394 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณพี่ๆ มากครับ

แต่จากที่ผมได้รองแล้วโค๊ดชุดนี้ มันจะเพิ่ม sid ขึ้นได้ก็ต่อเมื่อเรากำหนด sid ใน DB เป็น char 5 อะครับ ถ้าผมกำหนด เป็น 10 มันก็จาไปยอม + ขึ้น 1 ให้

แล้วก็ยังงงๆ กับ function StringFromRight รบกวน อธิบายละเอียดกว่านี้หน่อยได้ไหมครับ คือผมดูแล้วยังไม่เข้าใจอะครับ ว่าอย่าง strTmp.Substring ที่ได้เป็น (2,2) แล้วเอาไปทำอะไร Return ค่ากลับไปเป็นยังไงอะครับ
Date : 2010-01-01 10:44:57 By : Nameless
 


 

No. 5



โพสกระทู้ ( 100 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Hi5

strTmp.Substring ที่ได้เป็น (3,2) เป็นการตัดคำใน strTmp ครับ

อ้อโทษทีครับขอแก้ไข มึนปีใหม่นิดหน่อยครับ

สำหรับ Function StringFromRight นะครับ strTmp.Length = 5 ครับไม่ใช่ 4
จากที่ส่งมา StringFromRight(tmpID, 2) สมมุติ tmpID เป็น SP007

strTmp = SP007
strTmp.Length = 5 จำนวนตัวอักษร เลยต้องประกาศเป็น 5 ครับ
strLength = 2

Public Function StringFromRight(ByVal strTmp As String, ByVal strLength As Integer) As String
If (strLength > 0 And strTmp.Length >= strLength) Then
Return strTmp.Substring(strTmp.Length - strLength, strLength) // 5-2,2 จะได้ Substring(3,2) ครับ
Else
Return strTmp
End If
End Function

ค่าที่ได้จะเหลือเฉพาะ 07 ครับ

Return กลับไป
LastID = CInt(StringFromRight(tmpID, 2))
LastID ก็เท่ากับ 07 ครับ

strTmp.Substring ที่ได้เป็น (3,2) สมุติค่าใน strTmp = SP007 3 ก็จะเป็น Index แรกที่จะตัดครับ นับตำแหน่งแรกเป็น 0 ,2 คือจำนวนที่ต้องการตัดครับ สรุปคือตัดทางขวามาสองตัวอ่ะครับ ถ้าเป็นผมๆจะตัดมา 3 ตัวเลยคือ 007 ครับ ผมจะส่งเป็น LastID = CInt(StringFromRight(tmpID, 3))




ตัวอย่างศึกษาครับ


Code (C#)
using System;

class Program
{
    static void Main()
    {
        string input = "OneTwoThree";

        // Get first three characters
        string sub = input.Substring(0, 3);   
        Console.WriteLine("Substring: {0}", sub);
    }
}



=== Output of the program ===

Substring: One

นับตัวอักษรตัวแรกเป็นตำแหน่งที่ 0 ครับ
Date : 2010-01-02 11:24:13 By : KohDev
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ไม่เข้าใจ Code ครับ คือผมไปเอาของคนอื่นมาใช้นะครับ แต่ว่าไม่เข้าใจว่ามันหมายความว่ายังไงอะครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่