รบกวนถามโค้ด บวก-ลบ
กระทู้เก่าบอร์ด อ.Yeadram

 10,746   9
URL.หัวข้อ / URL
รบกวนถามโค้ด บวก-ลบ

มือใหม่ค่ะ เพิ่งซื้อหนังสือมาลองผิด ลองถูก
ไม่ถึงอาทิตย์ โดยการลองใช้ access 2003

ยังไม่เข้าใจโค้ด

ตัวอย่าง...   สร้างตารางขึ้นมาหนึ่งตารางแล้ว

ProductID........................001
ProductName..................นาฬิกา
QuatityIn.........................10
QuatityOut......................2
Amout.............................ช่องนี้แหละค่ะ กำหนดอย่างไรบ้างคะ ถ้าต้องการทราบยอดคงเหลือ


   มือใหม่จริงๆ นะ.. อายก็อายที่เรียนรู้ช้า
แต่หวังว่าทุกท่านคงพอเข้าใจนะคะ.. รบกวนด้วยค่ะ

ปล.ถ้าพิมพ์ภาษาอังกฤษหรือผิดพลาดตรงไหน ขออภัยด้วยค่ะ

9 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R00976
หลักการเก็บข้อมูล จุดประสงค์การจัดการข้อมูลด้วยระบบฐานข้อมูล
คือการสร้างระเบียบให้มันเพื่อจัดการ เพื่อนำมาใช้ เพื่อนำมาคำนวนประมวลผลให้ง่ายขึ้น

คุณเก็บ จำนวนเคลื่อนไหวเข้า ได้ดีครับ
คุณเก็บ จำนวนเคลื่อนไหวออก ก็ได้ดีครับ

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

ข้อมูลในตาราง เป็นข้อมูลตายตัว ไม่ dinamic ยกตัวอย่างถ้าวันหลังคุณ ไปเปลี่ยนค่า ขาเข้า จาก 10 ให้เป็น 11 คุณก็ต้องคำนวนยอดคงเหลือใหม่อีกครั้งเพื่อให้ฟิลด์ Amout อัพเดตได้ถูกต้อง ถ้าคุณเปลี่ยน ครั้งละ 100 เรคคอร์ด หรือเปลี่ยน วันละ 3ครั้ง (สมมติให้มันดูเกินจริงไปหน่อยเพื่อให้เห็นภาพ) ฐานข้อมูลของคุณก็ต้องคำนวนใหม่ทุกๆ ครั้ง ทุกๆ เรคคอร์ด

แต่ถ้าเราไม่เก็บค่าคงเหลือ คุณจะอัพเดตขาเข้า กี่ครั้งต่อวัน หรือกี่เรคคอร์ดต่อครั้ง มันก็ไม่ต้องคำนวนค่าคงเหลือ มันจะปล่อยผ่านไป เมื่อคุณอยากรู้ยอดคงเหลือ(ในเวลาใดๆ ก็ตาม) คุณก็แค่ไปเปิด คิวรี่ ที่ทำเอาไว้ (เขียนสูตรคำนวน เข้า-ออก ไว้แล้ว) ก่อนหน้า

แนวคิดอย่างนี้ไม่ทราบว่าพอจะตามทันไหมครับ ไม่รู้ว่าคุณใหม่แค่ไหน เห็นบอกว่ามือใหม่ จุดประสงค์ผมคือจะบอกว่า ไม่ต้องไปเก็บยอดคงเหลือไว้ในตารางครับ

แต่ถ้าหากต้องการ หรือจำเป็นจริงๆ มีหลายวิธีปฎิบัติครับทั้งอาจทำเป็นคิวรี่สำเร็จรูป ทั้งอาจใช้แมคโคร ทั้งอาจเขียนเป็นฟังก์ชั่น หรืออาจทำงานผ่านฟอร์มโดยเขียนโค้ดกำกับไว้ในเหตุการณ์ใดๆ แต่หลักๆ แกนๆ ของมันคือการสั่งอัพเดตข้อมูล ด้วยภาษา SQL ครับ

- หลังจากกรอกข้อมูล ขาเข้า ขาออกครบแล้ว
- สร้างคิวรี่เปล่ามาตัวหนึ่ง เปิดในมุมมอง SQL เขียนไปว่า
UPDATE (ชื่อตาราง) SET Amout=[quantityin]-[quantityout];
-เซฟและปิดคิวรี่ครับ ทีนี้ลองรันคิวรี่นี้ครับ (ดับเบิ้ลคลิ๊กที่ชื่อคิวรี่นี้)
-ไปดูผลงานในตารางได้เลยครับ
2 @R00982
ขอบคุณมากนะคะ.. คุณ yaedram

ประมาณว่าตามทันค่ะ.. ขออนุญาตแนะนำตัว
มือใหม่จริงๆ นะ.. ชื่อแจมค่ะ

++++++++++++++++++++++++++++++++++++++++++++++++++++++

แจมมีพื้นฐาน excel มานิดหน่อย.. สามารถลิ้งค์โยงข้ามชีต
ใส่สูตรคำนวณ จนสร้างฐานข้อมูลง่ายๆ ได้.. เลยคิดอยากพัฒนามาใช้ access

นอกจากนี้ความรู้ด้านคอมพิวเตอร์พอมีบ้างค่ะ
มีประสบการณ์ทำเว็บไซต์ และเลยไปถึงออกแบบเว็บไซต์ขาย
(แต่ยังไม่เก่งนะ.. เพิ่งหัดทำ.. อาศัยลูกค้าน่ารักค่ะ
ช่วยจ้าง..จริงๆ ลูกค้าเรียกใช้บริการเราแบบช่วยจ้างค่ะ)

ใช้ my sql ไม่เป็นนะคะ.. ใช้บอร์ดฟรี + บอร์ดที่แถมมากับเว็บไปเลยน่ะค่ะ

เข้าเรื่องๆ ด้วยความเคยชินเอ็กเซล ก็เลยคิดจะเก็บค่าคงเหลือไว้ในตารางเดียวกันกับ
จำนวนเข้า-ออก

เดี๋ยววันนี้จะลองนำคำแนะนำของคุณไปใช้ ขอบพระคุณมากนะคะ

++++++++++++++++++++++++++++++++++++++++++++++++++++++

ที่แจมตั้งใจจะลองทำก็คือ..

ใช้ access เป็นฐานข้อมูล เพื่อ

1. บันทึกบัญชี เข้า-ออก ของสต็อก ของร้านค้าที่มี 4-5 สาขา
2. ออกยอดรวม รายเดือน หรือเรียกยอดรายสะดวก เพื่อเช็คยอดสินค้า
3. ทำแบบฟอร์ม เพื่อให้คนที่ใช้งาน access ไม่เป็นเลย ใช้งานได้

วิธีที่ทำตอนนี้..

1. สร้างตาราง กลุ่มสินค้า
2. สร้างตาราง รหัสสินค้า
3. สร้างตาราง รหัสสาขา(+ชื่อสาขา)
4. สร้างตาราง สต็อกการ์ด (ที่ต้องการคิวรี่ ตาราง 1 และ 2 มาปรากฎในตาราง 3
   โดยผู้ใช้ไม่ต้องกรอกรายการใหม่

สิ่งที่ทำได้.. 4 ตารางดังกล่าว แต่กำลังมีปัญหากับการกำหนดขอบเขตของฟิลด์
เพราะ ยังสับสน เรื่องการวางคำสั่ง ว่าต้องให้ฟิลด์ไหนว่าง ผ่านไปได้

แต่ปัญหาไม่ใช่ปัญหา.. เพราะอันนี้กำลังพยายาม

แต่ปัญหาที่เป็นปัญหา ก็คือ ความสับสนในการใช้โปรแกรม เนื่องจากเป็นมือใหม่
ดันอยากจะทำทุกอย่างให้เสร็จเร็วๆ เหมือนที่ทำได้ใน excel (หลอนหัวมากนะ excel เนี่ย)

สิ่งที่ต้องการ.. คือ หาใครสักคนพอจูงจมูกเดินไปในทิศทางที่ถูกต้อง..

ขอบคุณคุณ yeadram มากอีกครั้งค่ะ.. จะมารบกวนอีกแน่ๆ..


3 @R01593
รบกวนถามค่ะ อยากเขียนโคดใน access กำหนดนัดวัน โดยให้กลับมาติดต่อเราอีก 3 วันข้างหน้า เขียนอย่างไรค่ะ ขอบคุณมากค่ะ
4 @R01594
วันนัด = DateAdd("d",3,date)
5 @R02373
คือว่าผมต้องการให้ฟิล2ฟิลมาบวกกันโดยการทำงานผ่านฟรอมไม่ทราบว่าผมต้องใส่สูตร ตรงช่องผลรวมในฟรอมอย่างไรครับ ที่ผมรองทำ คือ
=[text1]+[text2]
แต่ผลที่ได้กับเป็นว่านำเอาตัวเลขทั้ง2ฟิลมาต่อกัน เช่น 20+20 ผลที่ได้คือ 2020
รบกวนด้วยนะครับ
6 @R02374
แสดงว่า ข้อมูลของคุณ มันถูกมองเป็นข้อความทั้งสองค่า มันจึงเอามาเขียนต่อกัน
ให้แปลงค่า "ข้อความ" (string) เป็น "ตัวเลข" (Number) ก่อนครับ แล้วค่อยเอามาบวกกัน

แต่คำว่า "ตัวเลข" มันยังมีแยกย่อยได้อีกหลายชนิด Integer, Long, Double เป็นต้น

ถ้าคุณต้องการคำตอบในรูป "จำนวนเต็ม" ก็อาจจะแปลงให้เป็น Integer หรือ Long ก็ได้ครับ เช่น
= cint(Text1) + cint(Text2)
หรือ = cLng(Text1) + cLng(Text2)

แต่ถ้าต้องการให้คำตอบออกมาในรูป "จำนวนจริง" ก็ต้องแปลงให้เป็น double ก่อนครับ เช่น
=val(Text1)+val(Text2) หรือ
=cDbl(Text1) + cDbl(Text2)

แต่การใช้ฟังก์ชั่นแปลง String ให้เป็น Number เหล่านี้จะมีข้อจำกัดมากๆ ว่าข้อมูลที่จะนำไปแปลง ต้องเป็นตัวเลขล้วนๆ หรือ จุดทศนิยมนะครับ ถ้ามีตัวอักษร และ/หรือ สัญญลักษณ์, เครื่องหมาย, อักขระพิเศษต่างๆ เข้ามาด้วย มันจะเกิด Error
เพราะฉะนั้นต้องมั่นใจด้วยว่าข้อมูล ใน Textbox ทั้งสองต้องเป็นตัวเลขล้วนๆ ครับ
7 @R06461
เรียนคุณ CHOON
1) อ่านกระทู้ 598 หลายๆ ความเห็นในหน้าแรก อาจจะช่วยทำความเข้าใจได้บ้าง
2) ต่อไปอ่านกระทู้ 992 เพื่อเสริมๆ กันเข้าไป
3) แถมอีกซัก 1 กระทู้เป็นไง
124


ถ้าต้องการเพิ่มเติม ขอแนะนำให้ไปที่หน้าแรกของเว็บบอร์ด มีกล่องให้ค้น (โดย google) ค้นเลยครับ คำว่า สต็อก หรือ stock
ผลการค้นที่จะแสดงออกมา ได้ผ่านการกรองไว้แล้วว่าให้แสดงเฉพาะเว็บที่กล่าวถึง Access เท่านั้น เพราะฉะนั้นมั่นใจได้ว่าจะไม่มีลิงค์ขยะเข้ามาเจือปน
8 @R21913
ขอสอบถามครับ
total:[qtyin]-[qtyout]
แต่เมื่อ มีขางานเข้า แต่ไม่มีออก ผลรวมมัน ไม่แสดงอะครับ
9 @R21916
Function NZ(anyValue As Variant) As Double

    If IsNull(anyValue) Then
        NZ = 0
    Else
        NZ = anyValue
    End If

End Function

เพิ่ม Funtion นี้เข้าไปใน Module วิธีใช้

total: nz([qtyin])-nz([qtyout])   ครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2654s