 |
|
สอบถามผู้รู้ Visual Basic 6.0 เรื่อง Control Textbox และ Connect Database ค่ะ |
|
 |
|
|
 |
 |
|
ลองค้นหาคำว่า VB.net SQL Insert ดูครับ
ใช้ให้คล่องก็ ป้อนชื่อคนลงบน textbox > กดปุ่มเซฟ > เก็บลง Database ได้แล้วครับ
|
 |
 |
 |
 |
Date :
2016-05-12 13:12:55 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ส่วนมากจะติดต่อกับฐานข้อมูลที่เป็น ADO ค่ะ
แล้วก็เป็น VB version 2008,2015 ที่มันไม่ตรงกับที่เราใช้อยู่คือ vb 6.0
คงหมดหนทางละจริงๆ _ ขอบคุณมากค่ะ
|
 |
 |
 |
 |
Date :
2016-05-12 13:24:13 |
By :
pemneeat |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
- โรงเรียนไหนยังสอน vb6 อยู่อีกเหรอ
- If A & B <> "" Then <== เงื่อนไขนี้ work เหรอ
- เครื่องไม่สามารถ Simulate ฐานข้อมูลจำลองมาใช้ได้ เพราะติดพาสเวิร์ด ADMIN T_T <== ไม่น่าจะใช่เหตุผลนะ
คำถามคือ ..
= เราจะรับค่าของ Textbox ที่ผู้ใช้ป้อนเข้ามา แล้วเอาไปเก็บที่ฐานข้อมูลได้ยังไงคะ
ไม่ทราบคำสั่งและวิธีเอาข้อมูลไปเก็บเลบ
- ก็รับเข้ามาเหมือนที่เอามาเปรียบเทียบนั่นแหละ ส่วนการติดต่อ access นั้น vb6 ก็ใช้ ado นั่นแหละ ไม่มีทางเลือกอยู่แล้ว
เทคโนโลยีเก่าขนาดนั้น ก็สร้าง connection ก่อน จากนั้นก็สร้าง command แล้วก็ bind parameter แล้ว execute
Code (VB.NET)
Private Sub SaveBtn_Click()
Dim A, B As String
A = PT1.Text
B = PT2.Text
If A = "" Or B = "" Then
MsgBox "Insert Lot ID"
PT1.SetFocus
Exit Sub
End If
If A <> B Then
MsgBox "Lot ID Wrong!"
PT1.SetFocus
Exit Sub
End If
Dim C As New ADODB.Connection
C.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;User Id=admin;Password=;"
Dim SQL As String
SQL = "INSERT INTO MyTable (ID, Name) VALUES (" & A & ", " & B & ")"
C.Execute(SQL)
C.Close
End Sub
= เมื่อเราป้อนข้อมูล แล้วกดบันทึก เราจะสามารถทดสอบได้อย่างไรว่า ข้อมูลนั้นบันทึกแล้วจริงๆ
(เคยคิดจะทดสอบใน Excel แต่ไม่เป็นเลยจริงๆ โง่มาก )
- เป็น access ก็เอา .mdb มาเปิดดูสิ
ปล. จริงๆ น่าจะเอาครูมาปรับทัศนคตินะ สอนไปได้ไง vb6 เขาเลิกพัฒนาจะ 20 ปีอยู่แล้ว ไม่ได้ติดตามเทคโนโลยีเลย
แล้วจะสอน it ได้ไง ตัวเองยังตามเทคโนโลยีไม่ทันเลย
|
 |
 |
 |
 |
Date :
2016-05-12 15:47:40 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พอดีไปอ่านดูเห็นโค๊ดเหมือน vb.net vb6 ไม่ใช่ vb.net เรอะครับ
   
งั้นต้องขออภัยอย่างยิ่งนะครับกับการแนะนำของผม
|
 |
 |
 |
 |
Date :
2016-05-12 16:23:42 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เรียนคุณ Guest
- โรงเรียนไหนยังสอน vb6 อยู่อีกเหรอ
เอ่อ ไม่ใช่ โรงเรียนค่ะ เป็นบริษัทแห่งหนึ่งที่เขายังใช้รุ่นนี้อยู่
แต่เราดันซื้อหนังสือรุ่นใหม่ล่าสุดมาอ่าน ทำให้ไม่เข้าใจเท่าที่ควร
อย่าไปโทษบริษัทเขาเลยนะ ^^
เราเพิ่งศึกษาได้แค่สามวันเองค่ะ
- If A & B <> "" Then <== เงื่อนไขนี้ work เหรอ
เรื่องเงื่อนไข เราอ่านมาจากหลายๆเวปแล้วลองทำเองคะ
มันใช้ได้นะ
ถึงจะไม่ถูกก็เถอะ
พอรันไทม์ไป มันก็ออกมาตามต้องการนี่นา
- เครื่องไม่สามารถ Simulate ฐานข้อมูลจำลองมาใช้ได้ เพราะติดพาสเวิร์ด ADMIN T_T <== ไม่น่าจะใช่เหตุผลนะ
อืม
ปกติเคยเรียนเก่ากว่านั้นอีกค่ะ เป็น Delphi7
ใช้ wamp serverในการจำลองฐานข้อมูล
เลยนึกว่ากับ VB มันน่าจะเป็นตัวเดียวกัน
ขอโทษนะคะ เราด้อยประสบการณ์
แต่ในคอมของทางบริษัทเราทราบกันดีว่า
เรื่อง ความปลอดภัย อันนี้มันเลี่ยงไม่ได้ค่ะ
ซึ่งในเครื่องเดิมๆเลยไม่มี Access ด้วยค่ะ ตอนนี้เลยโหลด access Nortwind ที่เคยเรียนมาเพราะพอจำคลาสได้
จะจำลองฐานข้อมูลมาใช้เค้าก็ไม่ให้installลงเครื่อง ท่านมีวีธีอื่นไหมคะ ?
คำถามคือ ..
= เราจะรับค่าของ Textbox ที่ผู้ใช้ป้อนเข้ามา แล้วเอาไปเก็บที่ฐานข้อมูลได้ยังไงคะ
ไม่ทราบคำสั่งและวิธีเอาข้อมูลไปเก็บเลบ
- ก็รับเข้ามาเหมือนที่เอามาเปรียบเทียบนั่นแหละ ส่วนการติดต่อ access นั้น vb6 ก็ใช้ ado นั่นแหละ ไม่มีทางเลือกอยู่แล้ว
เทคโนโลยีเก่าขนาดนั้น ก็สร้าง connection ก่อน จากนั้นก็สร้าง command แล้วก็ bind parameter แล้ว execute
เรื่องของการสร้าง connection จะไปศึกษาเพิ่มนะคะ ไม่ทราบมาก่อนเลยจริงๆ ขออภัยค่ะ
ของเราเป็นการเริ่มศึกษาจาก 0 อย่างที่บอกว่าสามวันเราไม่ทราบเท่าคุณหรอกค่ะ
ไม่งั้นคงไม่มาตั้งกระทู้โง่ๆถาม
= เมื่อเราป้อนข้อมูล แล้วกดบันทึก เราจะสามารถทดสอบได้อย่างไรว่า ข้อมูลนั้นบันทึกแล้วจริงๆ
(เคยคิดจะทดสอบใน Excel แต่ไม่เป็นเลยจริงๆ โง่มาก )
- เป็น access ก็เอา .mdb มาเปิดดูสิ
ตามที่บอกด้านบน
Access เราเปิดไม่ได้ในเครื่อง เนื่องจากไม่มีโปรแกรมตัวนี้ ถึงจะลงไปก็ลงไม่ได้เพราะพาสแอดมิน
จึงใช้วิธีเรียกดูผ่าน Textbox เอาอีกรอบ
ปล. จริงๆ น่าจะเอาครูมาปรับทัศนคตินะ สอนไปได้ไง vb6 เขาเลิกพัฒนาจะ 20 ปีอยู่แล้ว ไม่ได้ติดตามเทคโนโลยีเลย
แล้วจะสอน it ได้ไง ตัวเองยังตามเทคโนโลยีไม่ทันเลย
คงเป็นเพราะข้อจำกัดของบริษัทด้านการเงินละมั้งคะ ลิขสิทธิ์แพงขนาดนี้ใครเค้าจะเปลี่ยนบ่อยๆ
เอ่อ ถ้าคุณไม่ต้องการที่จะตอบทีหลังก็ไม่ต้องตอบก็ได้นะคะ ข้ามผ่านไปเลยจ่ะ ไม่ได้บังคับ
ขอบคุณสำหรับคำตอบของคุณค่ะ
|
 |
 |
 |
 |
Date :
2016-05-12 16:45:54 |
By :
pemneeat |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าใช้ VB6 และ Connect แบบ ADO ลองใช้แบบนี้ครับ
สมมุตชื่อที่เก็บข้อมูลลงในตาราง ว่า Person_Collect
Code (VB.NET)
Sub Save_Data ()
Dim A, B As String
if PT1.text = "" then
Msgbox "กรุณาป้อน เลขที่ ID"
pt1.setfocus
exit sub
end if
if PT2.text = "" then
Msgbox "กรุณาป้อนชื่อ นามสกุล"
pt2.setfocus
exit sub
end if
A = PT1.Text
B = PT2.Text
With Person_Collect
.Addnew
.P_ID = A
.P_Name = B
.Update
End with
PT1.Text = ""
PT2.Text = ""
PT1.set focus
End Sub
ลองดูนะครับ ขอให้โปรแกรมของคุณประสพความสำเร็จนะครับ
|
 |
 |
 |
 |
Date :
2016-05-12 19:48:00 |
By :
ละอ่อน |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
A & B <> "" อันนี้ใช้ได้ครับ ไม่ผิด ไวยกรณ์ แต่ ต้อง รู้ priority ของ operand ว่า ตัวไหนสำคัญกว่า
กระทำตัวไหนก่อนหลัง ถ้าจะให้ดี ใส่วงเล็บครอบ ไว้จะชัดเจนครับ
A & (B<>"")
(A & B) <>""
(A>"") & (B>"") ผมเดาว่าคงต้องการแบบนี้
delphi 7 ถึงจะเก่าไปบ้าง แต่ยังใช้งานได้ดีอยู่เลย
แต่ผมใช้ rad studio xe8 ว่าจะหา xe10 มาใช้ซักหน่อย
แล้วทำไมไม่ใช้ delphi7 เขียนโปรแกรมล่ะครับ
หรือโดนบังคับ 55555
|
 |
 |
 |
 |
Date :
2016-05-12 20:24:18 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เพิ่มเติมนะครับ ไม่ว่าคุณจะใช้โปรแกรมเก่าแก่ หรือหลาย ๆ คนบอกว่าล้าสมัยแล้วก็ตาม หากโปรแกรมนั้นสามารถแก้ไขปัญหา
หรือ ทำงานได้ดี ใช้งานง่าย ดูแลรักษาง่าย ในหน่วยงานของคุณ ก็ไม่จำเป็นที่จะต้องไปใช้โปรแกรมใหม่ ๆ ให้ยุ่งยากหรอกครับ
VB 6.0 นั้น ไม่เลวทีเดียว พัฒนาง่าย controls , tools ต่าง ๆ มี Event ให้เลือกใช้มากมาย สามารถใช้ในระบบเครือข่ายภายใน
(แลน) ได้เป็นอย่างดีครับ และถ้าคุณมีพื้นฐานจาก VB 6.0 แล้ว คุณจะขึ้นมาเขียนโปรแกรมบน WEB ได้ไม่ยากครับ เพราะพื้นฐาน
เดียวกัน ภาษาที่ใช้ก็ใกล้เคียงกันมากครับ ...
ขอให้โปรแกรมของคุณประสพผลสำเร็จนะครับ
|
 |
 |
 |
 |
Date :
2016-05-12 20:40:08 |
By :
ละอ่อน |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ก็ไม่ได้รังเกียจอะไร vb6 นักหรอก
แต่ไหนๆ จะศึกษาแล้ว ทำไมไปเริ่มที่เทคโนโลยีที่ตายแล้วล่ะ ???
ปล.ถ้าทำ database server ไม่ได้ แถมไม่มี access อีก ไม่ลองเป็น sqlite ดูล่ะ
แต่ไม่น่าจะใช้กับ vb6 ได้นะ หรือไม่ก็น่าจะมองเป็น vb.net หรืออย่างอื่นก็ได้
อย่างเคยใช้ delphi มาก่อน น่าจะลอง python (gui) ดูเพราะแนวทางเขียนจะคล้ายๆ delphi
ตรงมันใช้ space ใช้ tab ในการจบ syntax
ที่พล่ามมาทั้งหมดนี้ ไม่ต้องเสียเงินซักบาท รับรองได้ว่าบริษัทไม่ต้องลงทุนเพิ่ม
|
 |
 |
 |
 |
Date :
2016-05-13 14:12:32 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 14 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-05-13 14:12:32
รายละเอียดของการตอบ ::
ขอบคุณทุกความคิดเห็นที่ ช่วยเหลือในด้านโปรแกรมค่ะ
เคยไปประกาศหาคนเขียนให้แต่ไม่ต้องแล้วค่ะ ..
ตอนนี้เขียนโปรแกรมเองเสร็จแล้วทั้งหมด
ขอบคุณความเห็นทุกหมายเลข ค่ะ
ดิฉันไม่มีเจตนาจะดราม่าบ้าบอ
ก็เป็นเรื่องของบุคคลที่เขาต้องการจะศึกษาอะไร
และจะจบกระทู้ไว้ตรงนี้ ใครอยากดิ้นอะไรก็เชิญ
ส่วนคุณ ใช้ล็อคอินตัวเองสิคะ อย่าได้แค่เห่าในชื่อของ Guest
ฉันไมุ่ร้ว่าคุณเป็นใครและไม่สนใจที่จะสนทนาด้วย
เพราะฉะนั้น มาทางไหนไปทางนั้นค่ะ
Go to Hell ไปเลยก็ดีค่ะ
ไม่ต้องแนะนำอะไรทั้งนั้นแล้วค่ะ ฉันไม่ต้องการความเห็นจากคนอย่างคุณ
จบตรงนี้นะ
Bye!
|
 |
 |
 |
 |
Date :
2016-05-17 12:20:56 |
By :
pain |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เฮ้ยๆ เราว่าเราแนะนำดีๆ นะ
มันมีดราม่าตรงไหนด้วยเหรอ
|
 |
 |
 |
 |
Date :
2016-05-17 14:32:30 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@ คุณห้ามตอบเกินวันละ 2 กระทู้
วลีนี้ "สาวจีนถกกระโปรงนั่งอึหน้ารถไฟฟ้าไม่อายใคร"

ปล. สนใจอะไรกับผู้หญิงสวยฯแต่นั่งขี้ในที่สาธารณะ
|
 |
 |
 |
 |
Date :
2016-05-17 20:37:05 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@Pain สุดยอดโปรแกรมเมอร์
โปรแกรมเหี้ยอะไรใช้เวลาเพียงไม่กี่เพลา
จาก 2016-05-12 12:34:05 ถึง 2016-05-17 12:20:56
ผมใช้ VB และใช้เวลาเขียนมากกว่า 20 ปี มันยังไม่เสร็จแม้แต่โปรแกรมเดียว
ปล. ไม่มี
|
 |
 |
 |
 |
Date :
2016-05-17 20:55:40 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO18 ผมลืมคำสงสัยว่า "เสร็จจริงหรือเปล่า?"

|
 |
 |
 |
 |
Date :
2016-05-17 21:10:42 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โบราณบอกว่า "พี่รู้สอง น้องรู้หนึ่ง" เอามารวมกันก็ได้ 3 ครับ อย่าต่อว่าต่อขานกันเลย เอาความรู้มาบอก มาแลกเปลี่ยนกันดีกว่าครับ
ในที่นี้ระดับเทพกันทั้งนั้น จริง ๆ แล้ว จากการที่ได้ร่ำเรียนมาเกี่ยวกับการเขียนโปรแกรมนั้น อาจารย์ท่านย้ำเสมอว่า จะทำอย่างไรก็ได้
ให้โปรแกรมออกมาใช้งานได้ตามวัตถุประสงค์ ใช้โปรแกรมอะไรก็ได้ ที่ง่ายต่อการพัฒนา ใข้ระยะเวลาไม่นานนัก... ให้ใช้โปรแกรมอื่น ๆ ช่วย เช่นกันครับ ไม่ว่าโปรแกรมนั้นจะเก่าแก่เช่นไร หากใข้งานได้ตามวัตถุประสงค์ ก็ถือว่าประสพผลสำเร็จแล้ว ผมยังเห็นธนาคารบางธนาคาร
ยังใช้โปรแกรมที่เขียนด้วย Dos อยู่เลยครับทุกวันนี้ นี่เป็นเรื่องจริงครับ ผมเคยถามเขาว่า ทำไมไม่เปลี่ยนไปใช้ Windows เขาก็ตอบว่า
ก็โปรแกรมมันยังใช้งานได้ดี เร็ว ไม่มี Error ผมก็เลยอึ้งกิมกี่ไปเลยครับ
|
 |
 |
 |
 |
Date :
2016-05-18 19:29:20 |
By :
ละอ่อน |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@ละอ่อน, weerachai.va
ผมเติบโตมาจาก DOS แต่อาจารย์ของพวกคุณเติบโตมาจาก Windows
ง่ายฯ ดูที่ผมขาวหงอกไม่จำเป็นต้องบอกวัยอายุ
วันพรุ่งนี้ (26/05/2559 10.00 - 12.00 AM) ผมใช้เวลาแค่ 2 ชั่วโมงก็หาเงินได้ 6,000 บาท
ตอนเย็นผมก็กลับบ้าน หอมแก้มภรรยา (เมีย) --> สวดมนต์ และเข้านอน (กระซิบข้างหูภรรยาว่า วันนี้ผมหาเงินได้ 1,500 บาท)
ผมมั่นใจในสิ่งที่จะได้ยินว่า (ขอบคุณค่ะ งั้นหนูแบ่งให้พี่เอาไว้ใช้ 100 บาท) +55555
ปล. ผมมักจะพูดความจริงเพียงครึ่งเดียวสำหรับคนที่ผมรัก สำหรับคนอื่นผมไม่อยากให้เขารู้จักคำว่า "โกหก"
เดี๋ยวจะหาว่ามั่ว
& ในภาษา VB == + ในภาษาอื่นฯ แต่มีข้อแตกต่างเล็กฯน้อย เช่น
Code (VB.NET)
Dim i As Integer = 1
Dim s As String = "Hello World"
MsgBox(i & s) 'ผลลัพธ์ จะเท่ากับ 1Hello World
ความละเอียดอ่อนมันแตกต่างกัน แค่เสี้ยววินาทีเราไม่ควรจะมองข้าม
Code (VB.NET)
'หาเวลาสิ้นสุด ณ.สิ้นวันของแต่ละ RDBMS
'เพื่อค้นหาบนเงื่อนไข Where DocDate Between '2015-01-01' And x & ' 2015-01-01 23:59'
''' <summary>
'''
''' </summary>
''' <param name="RDBMSType"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function OffsetEnddateTime(Optional ByVal RDBMSType As String = "SQLite") As String
Dim strRet As String = " 23:59:59"
Select Case RDBMSType
Case "Oracle"
Case "FireBird", "MSSql"
strRet = " 23:59"
'Case Else
'SQlite
End Select
Return strRet
End Function
|
 |
 |
 |
 |
Date :
2016-05-26 15:10:31 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ยกตัวอย่าง มันมีด้วยหรือคำว่า "เทพ" มันก็มีแต่เทวดาเดินดินทั้งนั้น
เป็นเสืออยู่อีกป่าอาจจะเป็นหมาอีกป่าหนึ่งก็อาจเป็นไปได้เหมือนกัน
เงื่อนไขมันมาจากหน้าจอ Filter
Code (VB.NET)
'รายงานทางบัญชี สต๊อคการ์ด (IC_B4_02xIC_21)
'OrgCode = OrgName/OrgNameUS/etc
'PARTHIST.PROCESS_SEQ = 60-รับ, 100-จ่าย
'SQLite Date String Format
'yyyy-MM-dd HH:MM:SS.SSS
Public Shared Function IC_B4_02xIC_21(ByVal Warehouse As String,
ByVal From_Part_NO As String,
ByVal To_Part_NO As String,
ByVal From_Date As String,
ByVal To_Date As String,
ByVal OrgCode As String) As DataTable
Dim strSQL As XCData = Nothing
'Dim xFrom_Date As String = WL_Utility.DateUtils.GetFirstDayOfMonth(ZMonth, Zyear).ToString("yyyy/MM/dd") '2014-01-01
'Dim xTo_Date As String = WL_Utility.DateUtils.GetLastDayOfMonth(ZMonth, Zyear).ToString("yyyy/MM/dd 23:59:59") '2014-01-01 23:59
'SQL Server DateAdd(day, -30, GETDATE())
'SQLite SELECT DATE('NOW','-30 day')
'Firebird CAST('TODAY' AS TIMESTAMP) - 30
Dim curDateDec30 As String = If(RDBMSType = "Firebird", "CAST('TODAY' AS TIMESTAMP) - @P_Cycle_NO", If(RDBMSType = "SQLite", "DATE('NOW','-@P_Cycle_NO day')", "Not Implement yet."))
Select Case (WL_Common.PubConstant.RDBMSType)
Case "MsAccess"
'Not Implement yet.
Case Else
strSQL =
<![CDATA[
SELECT 'HED' AS REP_GROUP, WHS_BAL.WAREHOUSE, WHS_BAL.PART_NO, 'AAAAAAAA' AS DOC_NO, ' ' AS SEQ, CAST('3/3/2014' AS TIMESTAMP) AS DOC_DATE, CAST('00' AS INTEGER) AS PROCESS_SEQ,
'AA' AS TRAN_CODE, 'AAA' AS TRAN_TYPE, MIN(WHS_STAT.BEGIN_BAL) AS BEGIN_BAL, MIN(WHS_STAT.BEG_AMT) AS BEG_AMT, SUM(HIS_STAT.REC_QTY) AS REC_QTY,
SUM(HIS_STAT.ISS_QTY) AS ISS_QTY, SUM(HIS_STAT.ADJ_INC) AS ADJ_INC, SUM(HIS_STAT.ADJ_DEC) AS ADJ_DEC, 0.00 AS TRAN_QTY, 0.00 AS TRAN_QTYSORT,
SUM(HIS_STAT.TRAN_AMT) AS TRAN_AMT, '0' AS POST_FLAG, MIN(WHS_BAL.ACCODE) AS ACCODE, MIN(AC_TAB.ACCOUNT_NO) AS ACCOUNT_NO, MIN(UM_TAB.UM) AS UM,
MIN(UM_TAB.UM_DESC) AS UM_DESC, MIN(WHS_BAL.PART_DESC) AS PART_DESC, 0.00 AS UNIT_COST, (
SELECT MIN(WHS_TAB.WHS_DESC)
FROM WHS_TAB
WHERE WHS_TAB.WAREHOUSE = WHS_BAL.WAREHOUSE
AND WHS_TAB.STK_LOCATION = (
SELECT MIN(WHB.STK_LOCATION)
FROM WHS_TAB WHB
WHERE WHB.WAREHOUSE = WHS_BAL.WAREHOUSE
)
) AS WHS_DESC, (
SELECT MIN(TRAN_DESC)
FROM PARTHIST
WHERE 1 <> 1
) AS TRAN_DESC, MIN(REP1.NOTE) AS NOTE, MIN(REP2.NOTE) AS NOTE2, CAST('0' AS NUMERIC(15, 2)) AS HDL_TRAN_QTY, CAST('0' AS NUMERIC(15, 2)) AS HDL_UNIT_COST
FROM WHS_BAL
LEFT JOIN WHS_STAT ON WHS_BAL.WAREHOUSE = WHS_STAT.WAREHOUSE AND WHS_BAL.PART_NO = WHS_STAT.PART_NO AND WHS_STAT.ZYEAR = '57' AND WHS_STAT.PERIOD = '3'
LEFT JOIN HIS_STAT ON WHS_BAL.WAREHOUSE = HIS_STAT.WAREHOUSE AND WHS_BAL.PART_NO = HIS_STAT.PART_NO AND HIS_STAT.DOC_DATE < '3/1/2014'
LEFT JOIN AC_TAB ON WHS_BAL.WAREHOUSE = AC_TAB.WAREHOUSE AND WHS_BAL.ACCODE = AC_TAB.ACCODE
LEFT JOIN PART_STD ON WHS_BAL.PART_NO = PART_STD.PART_NO
LEFT JOIN UM_TAB ON PART_STD.UM = UM_TAB.UM
LEFT JOIN (SELECT @COMPANY AS NOTE) AS REP1 ON 1=1
LEFT JOIN REP REP2 ON REP2.ID = 'LAST_POST'
WHERE WHS_BAL.WAREHOUSE = @Warehouse AND WHS_BAL.PART_NO BETWEEN @From_Part_NO AND @To_Part_NO
GROUP BY WHS_BAL.WAREHOUSE, WHS_BAL.PART_NO
UNION ALL
SELECT 'DET' AS REP_GROUP, PARTHIST.WAREHOUSE, PARTHIST.PART_NO, PARTHIST.DOC_NO, PARTHIST.SEQ, PARTHIST.DOC_DATE, PARTHIST.PROCESS_SEQ, PARTHIST.TRAN_CODE,
PARTHIST.TRAN_TYPE, 0.00 AS BEGIN_BAL, 0.00 AS BEG_AMT, 0.00 AS REC_QTY, 0.00 AS ISS_QTY, 0.00 AS ADJ_INC, 0.00 AS ADJ_DEC, PARTHIST.TRAN_QTY, CASE
WHEN ABS(PARTHIST.TRAN_QTY) > 0
THEN (PARTHIST.TRAN_QTY / (ABS(PARTHIST.TRAN_QTY)))
ELSE 0
END AS TRAN_QTYSORT, PARTHIST.TRAN_AMT, PARTHIST.POST_FLAG, WHS_BAL.ACCODE, AC_TAB.ACCOUNT_NO, UM_TAB.UM, UM_TAB.UM_DESC, WHS_BAL.PART_DESC, PARTHIST.UNIT_COST, (
SELECT MIN(WHS_TAB.WHS_DESC)
FROM WHS_TAB
WHERE WHS_TAB.WAREHOUSE = WHS_BAL.WAREHOUSE
AND WHS_TAB.STK_LOCATION = (
SELECT MIN(WHB.STK_LOCATION)
FROM WHS_TAB WHB
WHERE WHB.WAREHOUSE = WHS_BAL.WAREHOUSE
)
) AS WHS_DESC, PARTHIST.TRAN_DESC, REP1.NOTE AS NOTE, REP2.NOTE AS NOTE2, CAST('0' AS NUMERIC(15, 2)) AS HDL_TRAN_QTY, CAST('0' AS NUMERIC(15, 2)) AS HDL_UNIT_COST
FROM WHS_BAL
LEFT JOIN PARTHIST ON WHS_BAL.WAREHOUSE = PARTHIST.WAREHOUSE AND WHS_BAL.PART_NO = PARTHIST.PART_NO AND PARTHIST.DOC_DATE BETWEEN '3/1/2014' AND '3/3/2014 23:59'
LEFT JOIN AC_TAB ON WHS_BAL.WAREHOUSE = AC_TAB.WAREHOUSE AND WHS_BAL.ACCODE = AC_TAB.ACCODE
LEFT JOIN PART_STD ON WHS_BAL.PART_NO = PART_STD.PART_NO
LEFT JOIN UM_TAB ON PART_STD.UM = UM_TAB.UM
LEFT JOIN (SELECT @COMPANY AS NOTE) AS REP1 ON 1=1
LEFT JOIN REP REP2 ON REP2.ID = 'LAST_POST'
WHERE WHS_BAL.WAREHOUSE = 'CKM' AND WHS_BAL.PART_NO BETWEEN 'A' AND 'Z'
UNION ALL
SELECT 'DET' AS REP_GROUP, PARTHIST.WAREHOUSE, PARTHIST.PART_NO, PARTHIST.DOC_NO, PARTHIST.SEQ, PARTHIST.DOC_DATE, PARTHIST.PROCESS_SEQ, PARTHIST.TRAN_CODE, PARTHIST.TRAN_TYPE, 0.00 AS BEGIN_BAL, 0.00 AS BEG_AMT, 0.00 AS REC_QTY, 0.00 AS ISS_QTY, 0.00 AS ADJ_INC, 0.00 AS ADJ_DEC, PARTHIST.TRAN_QTY, CASE
WHEN ABS(PARTHIST.TRAN_QTY) > 0
THEN (PARTHIST.TRAN_QTY / (ABS(PARTHIST.TRAN_QTY)))
ELSE 0
END AS TRAN_QTYSORT, PARTHIST.TRAN_AMT, PARTHIST.POST_FLAG, WHS_BAL.ACCODE, AC_TAB.ACCOUNT_NO, UM_TAB.UM, UM_TAB.UM_DESC, WHS_BAL.PART_DESC, PARTHIST.UNIT_COST, (
SELECT MIN(WHS_TAB.WHS_DESC)
FROM WHS_TAB
WHERE WHS_TAB.WAREHOUSE = WHS_BAL.WAREHOUSE
AND WHS_TAB.STK_LOCATION = (
SELECT MIN(WHB.STK_LOCATION)
FROM WHS_TAB WHB
WHERE WHB.WAREHOUSE = WHS_BAL.WAREHOUSE
)
) AS WHS_DESC, PARTHIST.TRAN_DESC, REP1.NOTE AS NOTE, REP2.NOTE AS NOTE2, CASE
WHEN (- HDL.TRAN_QTY) > 0
THEN CAST((- HDL.TRAN_QTY) AS NUMERIC(15, 2))
ELSE 0
END AS HDL_TRAN_QTY, CASE
WHEN HDL.UNIT_COST > 0
THEN CAST(HDL.UNIT_COST AS NUMERIC(15, 2))
ELSE 0
END AS HDL_UNIT_COST
FROM WHS_BAL
LEFT JOIN PARTHIST ON WHS_BAL.WAREHOUSE = PARTHIST.WAREHOUSE AND WHS_BAL.PART_NO = PARTHIST.PART_NO AND PARTHIST.DOC_DATE BETWEEN '3/1/2014' AND '3/3/2014 23:59'
LEFT JOIN HIS_DTL HDL ON HDL.WAREHOUSE = PARTHIST.WAREHOUSE AND HDL.DOC_DATE = PARTHIST.DOC_DATE AND HDL.DOC_NO = PARTHIST.DOC_NO AND HDL.SEQ = PARTHIST.SEQ
LEFT JOIN AC_TAB ON WHS_BAL.WAREHOUSE = AC_TAB.WAREHOUSE AND WHS_BAL.ACCODE = AC_TAB.ACCODE
LEFT JOIN PART_STD ON WHS_BAL.PART_NO = PART_STD.PART_NO
LEFT JOIN UM_TAB ON PART_STD.UM = UM_TAB.UM
LEFT JOIN (SELECT @COMPANY AS NOTE) AS REP1 ON 1=1
LEFT JOIN REP REP2 ON REP2.ID = 'LAST_POST'
WHERE WHS_BAL.WAREHOUSE = 'CKM' AND HDL.UNIT_COST > 0 AND (- HDL.TRAN_QTY) > 0 AND WHS_BAL.PART_NO BETWEEN 'A' AND 'Z'
ORDER BY 2, 3, 6, 7, 4, 5
]]>
End Select
Return X_DatabaseVB.DbHelper.Query(strSQL.Value, New List(Of DbParameter) From
{
BuildParameter("@From_Date", From_Date),
BuildParameter("@To_Date", To_Date),
BuildParameter("@Tran_Code", Warehouse),
BuildParameter("@Warehouse", Warehouse)
})
End Function
|
 |
 |
 |
 |
Date :
2016-05-26 15:36:23 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|