หากมีคำถาม ขอให้ไปโพสต์ลง เว็บบอร์ดจีทูจีเน็ตดอตคอม ตัวใหม่แทนน่ะครับ

หรือติดต่อเข้ามาทาง Inbox ที่ เฟซบุ๊ค ผมครับ

หน้าหลัก
ข่าวสาร - บทความ ทั้งหมด
VB 6/VB.Net
ASP/ASP.Net
จับฉ่ายคอมพิวเตอร์
เรียนรู้ผ่าน Flash Movie
บทความที่มีผู้ตอบล่าสุด  
 RSS Feeds
 ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...   Download โปรแกรม RSS Reader

กระดานข่าวสาร เว็บบอร์ด - www.g2gnet.com
ดาวน์โหลดฟรีโปรแกรม และ Free Souce Code ได้ที่นี่ ...
รู้จักกับเว็บมาสเตอร์ - www.g2gnet.com
::: โปรแกรมมาใหม่ :::
โปรแกรมพิมพ์สติ๊กเกอร์บาร์โค้ด - Barcode Sticker
โปรแกรมพิมพ์สติ๊กเกอร์บาร์โค้ด - Barcode Sticker
โปรแกรมไปรษณีย์ และ จุดชำระค่าบริการ (iPayPost Software)
โปรแกรมไปรษณีย์ และ จุดชำระค่าบริการ
โปรแกรมจุดรับชำระค่าบริการ (iPayLite Software)
โปรแกรมจุดรับชำระค่าบริการ
::: BarcodeSoft :::
::: Printing :::
โปรแกรมพิมพ์รหัสบาร์โค้ด - BarcodeSoft Printing
โปรแกรมรหัสไปรษณีย์ทั่วไทย
::: G2GNet PostCode :::
!!!!! แจกฟรี !!!!!
ดาวน์โหลดโปรแกรมรหัสไปรษณีย์ทั่วไทย G2GNet PostCode Thailand
Visitors - Session views
 4 5 3 4 6 2 6

7 ธันวาคม พ.ศ.2549
13 Users On-Line.
Visitors - Page views
 7 6 7 2 3 2 0
1 กุมภาพันธ์ พ.ศ.2551

Google   
เว็บ g2gnet.com
ขนาดตัวอักษร:  
    ดาวน์โหลด และ แนะนำวิธีการติดตั้ง Active Report Professional 2.0
    แจกฟรี Source Code โปรแกรมขายสินค้า - Point Of Sale (โดย เว็บมาสเตอร์-ทองก้อน
    แจกฟรี Source Code การพิมพ์ใบกำกับภาษี - Active Report 2.0 (โดย ctx-9000@hotmail.com)
    SourceCode การดึงข้อมูลมาแสดงผลลงใน SharpGrid (โดย dos_network@hotmail.com)
    แจกฟรี Source Code VB6+Access โปรแกรมฐานข้อมูลครุภัณฑ์
    แจกโปรแกรมดูทีวี ดูหนัง ฟังวิทยุ ฟังเพลงออนไลน์ - G2GnetTV On Line ... ฟรีๆๆๆๆ
          ข้อมูลสถานี/รายการ (XML)  ข้อมูลสถานี/รายการ (HTML)
โปรแกรมระบบบัญชี Profit - Account

แจกฟรีซอร์สโค้ดโปรแกรมระบบขายสินค้า - Point Of Sale

Category »  VB 6/VB.Net
โดย : Webmaster เมื่อ 29/4/2553   เวลา: 14:31
(อ่าน : 229303)/(ตอบ : 95)  ข้อคิดเห็น   |   พิมพ์   |  
คุยกันก่อน ...
ระบบงานฐานข้อมูล ไล่มาจาก DBase, FoxBase, FoxPro และ Visual Basic ผมต้องใช้เวลาในการเรียนรู้ด้วยตนเอง และ หาประสบการณ์มานานหลายปี ลองผิด ลองถูกมาก็เยอะ แต่จะไม่มีวันนี้ หากเมื่อครั้งที่ผมทำงานครั้งแรกในตำแหน่ง "ช่างเทคนิค" อยู่นั้น ถ้าผมบอกว่า "งานแบบนี้มันไม่ใช่หน้าที่ของผม" ... โค้ดที่เห็นอยู่ในบทความชิ้นนี้ แม้มันจะไม่ใช่โค้ดจริงที่ผมเขียนโปรแกรมขาย และ ยังต้องตัดทอนออกไปจากระดับงานสอนแบบ "เรียนรู้นอกระบบ รบนอกตำรา" ของผมอีก เพราะเวลาถ่ายทอดจริง เด็กๆเขาจะเห็นจากหน้าจอ พร้อมๆกับผมเลย หากสงสัยสิ่งใดก็สามารถสอบถามผมได้ทันที แต่ถึงอย่างไรก็ตาม แนวคิดต่างๆของการออกแบบ ก็ไม่ได้ต่างกันเลยครับ นอกจากนี้แล้ว ผมยืนยันได้เลยว่าสายภาษาโปรแกรมอื่นๆ ก็ยังสามารถที่จะนำหลักการนี้ไปใช้ได้เช่นเดียวกัน ... เนื่องจากช่วงนี้ผมติดงานอยู่หลายตัว จึงยังไม่มีเวลาเพียงพอที่จะมาอธิบายถึงขั้นตอนต่างๆได้ทั้งหมดครับ ทำได้ตอนนี้ คือ สรุปสาระสำคัญเอาไว้ให้ดูก่อน หากมีข้อสงสัยอื่นใด สามารถสอบถามได้ครับ เพราะนี่คืออีกหนึ่งแห่งความภูมิใจของ "คนไทย" คนหนึ่ง ที่มอบให้กับ "คนไทย" อีกนับหลายๆคน
    ข้อแนะนำก่อนที่จะศึกษาโค้ดโปรแกรมระบบขายสินค้าของผม
  • ลืมทฤษฎีที่ศึกษามาจากห้องเรียน หรือ ความรู้จากตำราที่มีอยู่ในอ้อมกอดออกไปให้หมด เพราะสิ่งที่จะเห็นต่อไปนี้ มันต่างกันอย่างสิ้นเชิง
  • ต้องเข้าใจการเขียนโปรแกรมในลักษณะของ 1 : 1 มาก่อน เช่น การบันทึกรายการลูกค้า รายการสินค้า ซึ่งก็มีอยู่มากมายในเว็บไซต์ของผม
  • ต้องเข้าใจการใช้งาน Control พื้นฐานต่างๆ และ MS FlexGrid ซึ่งผมเขียนอธิบายเอาไว้ก่อนหน้านี้ไม่นาน
  • ต้องใจเย็นๆ ค่อยๆไล่แกะ และ คิดพิจารณาตามไปด้วย ... พยายามตั้งคำถามว่าทำไมให้บ่อยๆ
  • ที่สำคัญ ... ต้องมีมานะ พยายาม ขยัน และ อดทนในการเรียนรู้ฝึกฝน ...
  • วิธีการนี้มันคงไม่ใช่วิธีการที่ดีที่สุด ... แต่มันดีที่สุดสำหรับผม ณ ขณะเวลานี้ (และมานานหลายปีแล้ว)
คุณจะเข้าถึงความสุขนี้ได้ ก็ต่อเมื่อคุณรู้จักกับคำว่าให้
ดาวน์โหลด
ดาวน์โหลด Source Code สำหรับ MS Visual Basic 6.0 - Service Pack 6
 ดาวน์โหลด Visual Basic 6.0 SP5: Run-Time Redistribution Pack
 ดาวน์โหลด Microsoft Data Access Object (MDAC) และ Jet 4.0 Update
 ดาวน์โหลด Microsoft Visual Basic Service Pack 6
ข้อมูลเพิ่มเติม
ตารางกริด (MS Flex Grid) ธรรมดา ที่ไม่ธรรมดา ... VB 6.0
การอ่านข้อมูลแบบ Text File เข้าสู่ MS FlexGrid ด้วย MS Visual Basic 6.0
ตารางกริด (MS Flex Grid) ธรรมดา ที่ไม่ธรรมดา ... ตอนการจัดเรียงข้อมูลในการแสดงผลให้ MS FlexGrid
ตารางกริด (MS Flex Grid) ธรรมดา ที่ไม่ธรรมดา ... ตอนใช้ Wheel Mouse ใน MS FlexGrid
ตารางกริด (MS Flex Grid) ธรรมดา ที่ไม่ธรรมดา ... ตอนจับยัดข้อมูลเข้าไปใน MS FlexGrid ได้
พื้นฐานในการใช้งาน MS FlexGrid ก่อนสร้างความสัมพันธ์แบบ One To Many (ภาค 1)
พื้นฐานในการใช้งาน MS FlexGrid ก่อนสร้างความสัมพันธ์แบบ One To Many (ภาค 2)
พื้นฐานในการใช้งาน MS FlexGrid ก่อนสร้างความสัมพันธ์แบบ One To Many (ภาค 3)
เริ่มต้นการสร้างความสัมพันธ์ระหว่างตารางการขายสินค้า กับ ตารางลูกค้า
ตอนนี้ขอให้มองมาที่ ใบขายสินค้า 1 ใบ (ตาราง tblInvoice จะเป็น Master หรือ ตารางหลัก) จะขายสินค้าให้กับลูกค้าได้เพียง 1 รายเท่านั้น (ตาราง tblCustomer จะเป็น Detail หรือ ตารางย่อย) ดังนั้นมันคือความสัมพันธ์กันแบบ 1 : 1 (เช่นเดียวกับใบเช่าหนังสือ 1 ใบ ก็จะให้ลูกค้า/สมาชิก เช่าได้เพียง 1 รายเท่านั้นเช่นกัน) ... มองแบบนี้จะทำให้ง่ายต่อการวิเคราะห์และออกแบบ จะปรากฏดังภาพด้านล่างนี้

มองไปที่ใบขายสินค้า (tblInvoice) เป็นหลักก่อน (ผมถึงเรียกมันว่าตารางหลัก หรือ Master ยังไงล่ะครับ) เวลาเรียกใช้งานจริงเพื่อทำการแสดงผล เราไม่จำเป็นต้องเอา CustomerPK/CustomerFK มาก็ได้ เพราะขณะนี้มันเกิดความสัมพันธ์ขึ้นระหว่างทั้ง 2 ตารางแล้ว

ตารางข้อมูลการขายสินค้าหลัก tblInvoice (Master)

ชื่อฟิลด์

ชนิดข้อมูล

คำอธิบาย

InvoicePK

Long Integer

จะเก็บค่า Primary Key ของ InvoicePK เอาไว้ ค่านี้จะซ้ำไม่ได้ ... และที่สำคัญอย่างมาก ขอให้สังเกตว่าผมจะไม่ใช้ Primary Key ที่เป็น Autonumber เลย แต่จะมีวิธีการหาค่านี้ได้แบบไม่ซ้ำ ทั้งแบบ Stand Alone หรือ ต่อให้ทำงานบน LAN ... เพราะ Autonumber มันยากต่อการสร้างข้อมูล (ตุ๊กตา) ขึ้นมาทดสอบ ก่อนการลงโค้ดโปรแกรม และมีข้อเสียอื่นๆอีกแยะ

InvoiceCode

Text

เลขที่ใบการขาย เช่น INV-53000001 เพื่อใช้อ้างอิงในเอกสารเท่านั้น และผมขอร้องอย่าเอามันมาเป็น Primary Key เลยครับ ... เชื่อผมเหอะ หากไม่อยากมีปัญหาต้องปวดหัวตามมาในภายหลัง 55555+
เห็นหรือยังครับว่า แค่นี้ผมก็ต่างไปจากชาวบ้านชาวเมืองเขาแล้ว (Thongkorn's Theory)

CustomerFK

Long Integer

เป็นคีย์รอง หรือ Foreign Key เชื่อมความสัมพันธ์ไปยังตารางลูกค้า (เพราะคีย์หลัก หรือ Primary Key ของตารางนี้ คือ InvoicePK)
ดังนั้นแล้วการออกแบบของผม มันจะไม่มีหรอกครับที่มีรูปกุญแจ (Primary Key) มากกว่า 1 ตัว

TotalAmount

Currency

รวมเงินค่าสินค้าทุกรายการทั้งหมด ในใบขายใบนี้ใบเดียว

TotalDiscount

Currency

รวมเงินค่าส่วนลดสินค้าทุกรายการทั้งหมด ในใบขายใบนี้ใบเดียว

นั่นก็คือ ใบขาย 1 ใบ เช่น InvoicePK = 1 จะขายให้กับลูกค้าทั่วไป CustomerPK = 0 เพียงคนเดียวเท่านั้น เราถึงเรียกมันว่าเป็นความสัมพันธ์กันแบบ 1 : 1 ต่อไปพิจารณาว่าเราจะเอารายการสินค้าเข้าไปได้อย่างไร หากเราเอา ProductFK ยัดใส่เข้าไปในตารางหลัก tblInvoice เพื่อเชื่อมความสัมพันธ์เข้าสู่ตารางสินค้า (tblProduct) ผลที่ได้จะทำให้ความสัมพันธ์เดิมคลาดเคลื่อนไป


ตัวอย่างคือการขายสินค้า 2 รายการให้กับลูกค้า แทนที่ความสัมพันธ์มันจะเป็นแบบ 1 : 1 กลับกลายเป็นแบบ 1 : Many ไปซ่ะงั้น (มันมี 2 แถวรายการ) นอกจากนี้แล้วยังมีการเก็บข้อมูลซ้ำซ้อนกันเกิดขึ้นอีก เช่น InvoiceCode มันซ้ำๆตลอดทุกรายการ การรวมราคาสินค้าในการขายแต่ละใบขาย ก็ทำไม่ได้อีก ... ทางแก้คือ ต้องหาตารางข้อมูลอีก 1 ตารางมารับรายการขายสินค้าแต่ละรายการแทน โดยการเชื่อมความสัมพันธ์ด้วยใบขายสินค้าหลัก (InvoicePK) (เหมือนกับเชื่อมไปหาตารางลูกค้านั่นเอง) ...
โอกาสหน้าจะอธิบายวิธีการแยกแยะให้ละเอียดมากกว่านี้ครับ ... เรื่องนี้มันก็เข้าสูตรเดิมของผม คือ ฟิลด์อันไหนที่ซ้ำกันให้จับแยกออกไปอยู่อีกตาราง ฟิลด์ที่แยกออกไปนั้น นำมันกลับมาเชื่อมความสัมพันธ์กันใหม่อีกครั้ง (ตามตำราเขาเรียกมันว่า Normalization ครับพี่น้อง ... 55555+)

การออกแบบตารางข้อมูลความสัมพันธ์แบบ One To Many
ตารางข้อมูลการขายสินค้าย่อย tblInvoiceDetail (Detail)

ชื่อฟิลด์

ชนิดข้อมูล

คำอธิบาย

InvoicePK

Long Integer

จะเก็บค่า Primary Key ของ InvoicePK เอาไว้ ค่านี้จะซ้ำได้ (Duplicate) เพราะใบขาย 1 ใบ สามารถขายสินค้าออกไปได้มากกว่า 1 รายการ ดังนั้นตาราง tblInvoiceDetail ตัวนี้จะไม่มี และ ไม่จำเป็นต้องมี Primary Key เลย (ก็มันเป็นสูตรของผมเองน่ะครับ ... อย่างง เดี๋ยวไปดูโค้ดก็จะเข้าใจเอง)

ProductFK

Long Integer

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

PriceUnit

Currency

ราคาของสินค้า สาเหตุที่ต้องเก็บค่านี้ไว้ เพราะว่าการขายสินค้าแต่ละครั้งมันมีค่าไม่เท่ากันหรอกครับ

Quantity

Integer

จำนวนสินค้าที่ขายไป

TotalAmount

Currency

รวมเงินค่าสินค้ารายการนี้ทั้งหมด (จำนวน คูณ ราคาขาย)

TotalDiscount

Currency

รวมเงินส่วนลดราคาสินค้า


พอเราเชื่อมความสัมพันธ์กันแล้วอย่างถูกต้อง ... นี่คือใบขายสินค้า 1 ใบ ที่มี ค่า InvoicePK = 1 สามารถขายสินค้าได้มากกว่า 1 รายการ (ในตัวอย่างมีสินค้า 2 รายการ) เราถึงเรียกมันว่าเป็นความสัมพันธ์แบบ 1 : Many ยังไงล่ะครับพี่น้อง ... และการเชื่อมความสัมพันธ์ในลักษณะนี้ เราจะเอาไปใส่ไว้ในตารางกริดเพื่อทำรายการขายสินค้า ที่สามารถเข้าไปแก้ไข เพิ่มเติมการขายสินค้าในแต่ละครั้งต่อไปได้ครับพี่น้อง

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

หน้าจอการแสดงผลในส่วนของใบขายสินค้า (tblInvoice) และ ตารางลูกค้า (tblCustomer)

จำกัดเงื่อนไขเรื่องเวลา ... ผมขอนำเสนอเฉพาะบางอย่างไว้หน้าเว็บไซต์ก่อนน่ะครับ

เทคนิคที่สำคัญของการทำรายการขายสินค้า อยู่ที่ frmInvoiceDetail.frm และ โปรแกรมย่อย SaveData
ขั้นตอนกระบวนการที่สำคัญ จะมีอยู่ทั้งหมด 5 ขั้นตอน (หรือ 4 ขั้นตอน ... ให้ไปคิดเป็นการบ้าน) ขอให้ทุกท่านค่อยๆพยายามทำความเข้าใจไปน่ะครับ ... และขอให้สังเกตว่าตัวแปร PK (Primary Key) ตัวนี้ เป็นตัวสำคัญที่สามารถใช้งานได้ทั้งตาราง tblInvoice และ ตาราง tblInvoiceDetail
  • ขั้นตอนที่ 1
    เราจะสนใจพิจารณา คือ ตารางการขายหลัก (tblInvoice) เท่านั้น อย่างอื่นไม่ได้มาเกี่ยวข้องน่ะครับ
    • กรณีของการเพิ่มข้อมูล เราต้องทำการค้นหาค่า Primary Key (InvoicePK) ตัวใหม่
    • กรณีของการแก้ไขข้อมูล อาศัยค่า Primary Key ที่ส่งออกมาจากฟอร์มหลัก (frmInvoiceMain)
      (ดูที่ Form_Load ของ frmInvoiceDetail)
      
          ' #########################################################
          ' หากเป็นข้อมูลใหม่ NewData = True
          If NewData Then
          
              ' #########################################################
              ' ค้นหาค่า Primary Key ของ InvoicePK  ใหม่ ซึ่งเราจะต้องมาคำนวณหาในตอนจะ Save ข้อมูลเท่านั้น
              ' นี่คือปัญหาที่หลายคนเจอ ทำไมเวลาใช้งานจริง ค่า Primary Key หรือ InvoiceCode มันถึงซ้ำกันได้
              ' ก็เพราะจัดเรียงเหตุการณ์ หรือ ลำดับการทำงาน (Flow Control) ไม่ถูกต้องนั่นเองครับ ... พี่น้อง
              '
              Call SetupNewInvoice
              '
              ' จะเกิดการส่งค่า Primary Key ของ InvoicePK มาตัวแปร PK ตัวแปรตัวนี้ใช้ได้ทั้งตอนเพิ่ม และ แก้ไข
              ' #########################################################
              
              Statement = "SELECT * FROM tblInvoice ORDER BY InvoicePK"
              RS.Open Statement, ConnDB, adOpenKeyset, adLockOptimistic, adCmdText
              RS.AddNew
              ' ค่า Primary Key ที่คำนวณหาได้จากโปรแกรมย่อย SetupNewInvoice
              RS("InvoicePK") = PK
              RS("InvoiceCode") = Trim(txtInvoiceCode.Text)
              RS("DateAdded") = FormatDateTime(Now(), vbGeneralDate)
              RS("DateModified") = FormatDateTime(Now, vbGeneralDate)
              ' บันทึกผู้ใช้งาน เผื่อไว้กรณีที่ใช้งานแบบ Multi User
              RS("AddedByFK") = 0
              RS("LastUserFK") = 0
          
          '======================== แก้ไขข้อมูล ========================
          Else
              ' ก็เทียบค่าจาก Primary Key ที่ส่งมาจากฟอร์มหลัก (frmInvoiceMain)
              Statement = "SELECT * FROM tblInvoice WHERE InvoicePK = " & PK
              RS.Open Statement, ConnDB, adOpenKeyset, adLockOptimistic, adCmdText
          End If
          
          ' #########################################################
          '
          ' เริ่มต้นการบันทึกข้อมูลส่วนที่เหลือลงในตาราง tblInvoice เท่านั้น
          '
          ' #########################################################
          
          RS("InvoiceCode") = "" & Trim(txtInvoiceCode.Text)
          ' #########################################################
          ' รายการลูกค้า ที่เราซ่อน หรือ ฝาก Primary Key เอาไว้ใน txtCustomerCode.Tag
          ' และเราจะไม่ไปเชื่อมกับตารางลูกค้า tblCustomer เลย เพราะนี่แหละครับที่เรียกว่าการสร้างความสัมพันธ์
          '
          RS("CustomerFK") = CLng(txtCustomerCode.Tag)
          '
          ' #########################################################
          
          ' #########################################################
          ' รวมจำนวนเงินของสินค้าทั้งหมดทุกๆรายการ
          Dim TotalAmount As Currency
          TotalAmount = 0
          ' คำนวณหาราคาสินค้าทั้งหมดทุกชิ้นตามจำนวนแถวในตารางกริด ถามว่าทำไมต้องจัดเก็บลงตาราง tblInvoice
          ' ก็เพราะจะได้สะดวกต่อการนำไปแสดงผลในฟอร์มหลัก frmInvoiceMain ยังไงล่ะครับ
          ' จะได้ไม่ต้องมาคำนวณผลใหม่ทุกรอบ ทุกครั้งไป และ สามารถทำรายงานได้ง่ายขึ้นอีก
          For Rec = 1 To fgData.Rows - 1
              RS("TotalAmount") = Format(TotalAmount + CDbl(fgData.TextMatrix(Rec, 6)), "#,##0.00")
              TotalAmount = RS("TotalAmount")
          Next
          ' #########################################################
          
          ' บันทึกเวลาของการแก้ไขไว้ด้วย
          RS("DateModified") = FormatDateTime(Now(), vbGeneralDate)
          ' บันทึกผู้ใช้งาน เผื่อไว้กรณีที่ใช้งานแบบ Multi User (เมื่อ 0 คือ Administrator)
          RS("LastUserFK") = 0
          RS.Update
          RS.Close: Set RS = Nothing
          ' =================================================================
          ' หมดแล้วสำหรับข้อมูลในตาราง tblInvoice หากมีภาษี หรือ อื่นๆเราก็จะกระทำที่นี่ทั้งหมด
          ' =================================================================
      
  • ขั้นตอนที่ 2
    จะเกิดเฉพาะตอนที่ทำการแก้ไขข้อมูลเท่านั้น ... นั่นคือเิกิดบันทึกรายการขายสินค้าไปแล้ว แต่ลูกค้าเกิดคืนสินค้ากลับมา
    เราจึงต้องนำ จำนวนสินค้า ที่ขายออกไปเดิม ใน tblInvoiceDetail คืนกลับเข้าในรายการสินค้า (tblProduct) เสียก่อน
    หากคุณไม่ตัดสต็อค ก็ข้ามส่วนนี้ไปได้เลย

    การทำรายการขายเดิม


    การทำรายการขายใหม่ หรือ การแก้ไขข้อมูล จะเห็นได้ว่าในรายการที่ 2 เดิมมันหายไป


    แต่ในตารางข้อมูล tblInvoiceDetail มันยังคงมีรายการขายเดิมอยู่
    ดังนั้นเราต้องทำการคืนจำนวนสินค้านี้กลับเข้าสต็อคไปก่อน
    ... ทำไมเหรอครับ
    เพราะว่าต่อไปในใบขายสินค้าใบนี้ (InvoicePK = 1) ของตาราง tblInvoiceDetail
    เราจะลบรายการขายสินค้าเดิมในตารางข้อมูล tblInvoiceDetail ทิ้งออกไปให้หมดก่อน
    (อยู่ในขั้นตอนที่ 3)
    จากนั้นก็ค่อยเอาข้อมูลปัจจุบันที่อยู่ในตารางกริด มาทำการบันทึกเข้าไปแทนยังไงล่ะครับ (อยู่ในขั้นตอนที่ 4)
    
        ' #########################################################
        ' ทดสอบว่ามีข้อมูลสินค้าอยู่ในตาราง tblInvoiceDetail หรือไม่
        Dim blnData As Boolean
        ' รับค่า Primary Key ของสินค้านั้นๆไว้ก่อน
        Dim ProdPK As Long
        
        ' #########################################################
        ' ขั้นตอนนี้ คือ กรณีของการเข้าไปแก้ไขข้อมูล แล้วเกิดการลบข้อมูลสินค้าออกไปจากตารางกริด
        ' ดังนั้นต้องเอาข้อมูลที่อยู่ในแถวของตารางกริด ไปเปรียบเทียบกับข้อมูลเดิมตาม InvoicePK ใน tblInvoiceDetail
        ' หากพบข้อมูลในตาราง tblInvoiceDetail แต่ไม่เจอในตารางกริด แสดงว่ามีการลบข้อมูลสินค้าเดิมออกไป
        ' เราจะต้องทำการนำจำนวนสินค้าที่อยู่ในตาราง tblInvoiceDetail ส่งคืนกลับไปให้ตารางสินค้า tblProduct
        ' เพื่อปรับจำนวนสต็อคให้ตรงกับความเป็นจริง (ลูกค้าอาจคืนสินค้ากลับมาไงล่ะครับ)
        ' จะเกิดเหตุการณ์ตรวจสอบข้อมูลในส่วนนี้เฉพาะการแก้ไขข้อมูลเท่านั้น
        ' #########################################################
        
        ' ดังนั้น Not True ก็คือ ไม่จริง หรือ เท็จ นั่นเอง หรือจะเขียน If NewData = False ก็ได้
        If Not NewData Then
            '
            ' #########################################################
            ' เพราะเราจะทำการลบข้อมูลที่มีรหัส InvoicePK ตัวปัจจุบันนี้ทิ้งไปทั้งชุด ใน tblInvoiceDetail
            ' แล้วค่อยทำการบันทึกข้อมูลจากตารางกริดเข้าไปใหม่ (ในขั้นตอนที่ 4)
            ' #########################################################
            Set RS = New Recordset
            Statement = "SELECT * FROM tblInvoiceDetail WHERE InvoicePK = " & PK
            RS.CursorLocation = adUseClient
            RS.Open Statement, ConnDB, adOpenForwardOnly, adLockReadOnly, adCmdText
            
            blnData = False
            ' #########################################################
            ' เฉพาะการเข้ามาแก้ไขรายการขายสินค้าเท่านั้น วนรอบตามจำนวนค่า Primary Key ของใบขายสินค้า
            ' #########################################################
            Do Until RS.EOF
                ' วนรอบตามจำนวนแถวของตารางกริด
                For Rec = 1 To fgData.Rows - 1
                    ' เปรียบเทียบจากตารางข้อมูล (tblInvoiceDetail) หากมีค่าตรงกันกับ Primary Key ของสินค้า
                    ' ให้ออกจาก Loop For ไปเลย เพราะแสดงว่าเป็นข้อมูลสินค้าตัวเดิมอยู่แล้ว
                    ' หลัก 0 ที่ซ่อนเอาไว้ของตารางกริด คือ ค่า Primary Key ของสินค้านั้นๆ
                    If RS("ProductFK") = CLng(fgData.TextMatrix(Rec, 0)) Then
                        blnData = True
                        Exit For
                        
                    ' กรณีที่ที่เจอข้อมูลในตาราง tblInvoiceDetail แต่ไม่พบในตารางกริด แสดงว่า User ลบข้อมูลขายสินค้าเดิมออกไป
                    ' ต้องลงไปปรับจำนวนสต็อคสินค้าใหม่ ทางด้านล่าง
                    Else
                        ' เก็บค่า Primary Key ของสินค้าเพื่อนำจำนวนกลับไปคืนสต็อค
                        ProdPK = RS("ProductFK")
                        blnData = False
                    End If
                Next
                
                ' เมื่ออกจากวงรอบ FOR หากไม่พบรายการสินค้า blnData = False
                ' ทำการคืนกลับสินค้าเข้าสต็อคตรงนี้
                If Not blnData Then
                    Set DS = New Recordset
                    SQLStmt = "SELECT ProductPK, Stocked FROM tblProduct " & _
                                        " WHERE [ProductPK] = " & ProdPK & _
                                        " ORDER BY ProductPK"
                    DS.CursorLocation = adUseClient
                    DS.Open SQLStmt, ConnDB, adOpenKeyset, adLockOptimistic, adCmdText
                    If DS.RecordCount > 0 Then
                        ' #####################################################
                        ' สังเกตด้วยน่ะครับ RS("Quantity") เป็นค่าจำนวนสินค้าจากตาราง tblInvoiceDetail
                        ' ส่วน DS("Stocked") เป็นค่าที่อยู่ในตารางสินค้า tblProduct
                        ' ผมเคยเรียนให้ทราบแล้วว่า ผมประกาศใช้ RecordSet มาใช้งานไม่เกิน 3 ตัวหรอกครับ
                        ' เราอาศัยการเวียนนำมาใช้ ... หากประกาศพร่ำเพรื่อก็ต้องกิน Memory สูง และ โอกาสผิดพลาดก็มีสูงด้วย
                        '
                        DS("Stocked") = DS("Stocked") + RS("Quantity")
                        '
                        ' #####################################################
                        DS.Update
                    End If
                    DS.Close:   Set DS = Nothing
                End If
                ' เลื่อนรายการจากตารางข้อมูล
                RS.MoveNext
            Loop
    
            RS.Close:   Set RS = Nothing
        
        End If
        ' #########################################################
    
  • ขั้นตอนที่ 3 (กรณีเพิ่มข้อมูลใหม่ให้ข้ามไปได้เลย เพราะว่ายังไม่มีข้อมูลเดิม ... แต่คิดเอาเองครับจะทำยังไง)
    ทำการลบข้อมูลตาม Primary Key ของใบขาย (InvoicePK) ออกไปจากตารางข้อมูล tblInvoiceDetail
    
        ' #########################################################
        ' 3. คราวนี้ต้องลบข้อมูลในตารางย่อย tblInvoiceDetail ตามค่า Primary Key ออกไปก่อนให้หมด
        ' จากนั้นค่อยเอาข้อมูลจากตารางกริดที่กำลังทำรายการปัจจุบัน มาบันทึกใหม่เข้าไปแทนที่ของเดิม
        ' #########################################################
        SQLStmt = "DELETE tblInvoiceDetail.* FROM tblInvoiceDetail  " & _
                            " WHERE ([InvoicePK] = " & PK & ")"
                            
        ' สั่งลบข้อมูลออกไปทันทีเลย แม้ว่าจะไม่เจอ Primary Key ของ InvoicePK เลย
        Set DS = ConnDB.Execute(SQLStmt)
        ' #########################################################
    
  • ขั้นตอนที่ 4
    เป็นการนำข้อมูลรายการขายสินค้าที่อยู่ใน MS FlexGrid เข้าไปจัดเก็บไว้ในตาราง tblInvoiceDetail
    
        ' #########################################################
        For Rec = 1 To fgData.Rows - 1
            ' =========== เฉพาะตาราง tblInvoiceDetail ===========
            ' สำหรับตารางกริด
            ' หลัก 0 = ProductFK (หลัก 0 ที่ซ่อนไว้) เป็นคีย์รอง (Foreign Key) ที่เชื่อมโยงไปหาตาราง tblProduct ได้นั่นเอง
            ' หลัก 1 = รหัสสินค้า เช่น 0001 เราไม่เก็บ เพราะมี Primary Key (ProductPK) ของ tblProduct ชี้ไปหา
            ' Foreign Key (ProductFK) ใน tblInvoiceDetail อยู่แล้ว (นี่แหละคือความสัมพันธ์ระหว่างตาราง)
            ' หลัก 2 = ชื่อสินค้า (ไม่จัดเก็บ)
            ' หลัก 3 = หน่วยนับ (ไม่จัดเก็บ)
            ' หลัก 4 = เก็บราคาขายปัจจุบัน
            ' หลัก 5 = เก็บจำนวนการขาย
            ' หลัก 6 = คำนวณจำนวนเงินทั้งหมดเฉพาะสินค้าตัวนี้
            ' หลัก 7 = จำนวนสินค้าเดิมที่เราซ่อนเอาไว้ เพื่อนำไปตัดสต็อค
            Set RS = New Recordset
            Statement = "SELECT * FROM tblInvoiceDetail ORDER BY InvoicePK "
            RS.Open Statement, ConnDB, adOpenKeyset, adLockOptimistic, adCmdText
            With fgData
                RS.AddNew
                RS("InvoicePK") = PK
                RS("ProductFK") = CLng(.TextMatrix(Rec, 0))
                RS("PriceUnit") = Format(CDbl(.TextMatrix(Rec, 4)), "#,##0.00")
                RS("Quantity") = Format(CLng(.TextMatrix(Rec, 5)), "0")
                RS("TotalAmount") = Format(CDbl(.TextMatrix(Rec, 6)), "#,##0.00")
                RS.Update
                ' ====================================================
            End With
            RS.Close:   Set RS = Nothing
        Next
        ' #########################################################
    
  • ขั้นตอนที่ 5
    ปรับจำนวนสต็อคสินค้าที่ขายไปให้ถูกต้อง (อันที่จริงทำพร้อมๆกับขั้นตอนที่ 4 ก็ได้
    แต่ผมขอแยกออกมาเพื่อให้ดูได้ชัดเจน และ ง่ายขึ้นครับ)
    
        ' #########################################################
        ' 5. ปรับสต็อคสินค้าใหม่ทั้งหมด ............................................................ ขั้นตอนสุดท้ายแล้ว
        ' โดยนำค่าจำนวนสินค้าเดิมที่เราซ่อนในตารางกริด (หลักที่ 7) ไปบวกกลับคืนเข้าในสต็อคก่อน
        ' แล้วลบออกด้วยจำนวนสินค้าใหม่ในหลักที่ 5 แทน ... เทคนิคง่ายๆเท่านั้นเองครับ ไม่ยากเลย
        ' ตอนนี้จะทำงานเฉพาะตารางข้อมูลสินค้าเท่านั้น (tblProduct)
        ' #########################################################
        For Rec = 1 To fgData.Rows - 1
            ' ===== ตาราง tblProduct ===========
            Set RS = New Recordset
            ' เอาค่า Primary Key ในหลัก 0 ที่ซ่อนไว้ออกมาใช้ เพราะนั่นมันคือ Primary Key ของสินค้า
            Statement = "SELECT * FROM tblProduct WHERE [ProductPK] = " & _
                CLng(fgData.TextMatrix(Rec, 0)) & " ORDER BY ProductPK "
            RS.Open Statement, ConnDB, adOpenKeyset, adLockOptimistic, adCmdText
            With fgData
                ' เอาจำนวนในสต็อคเดิม RS("Stocked") มาบวกกับจำนวนเดิม (หลักที่ 7)
                ' แล้วลบออกจากจำนวนใหม่ (หลักที่ 5)
                RS("Stocked") = Format((RS("Stocked") + CLng(.TextMatrix(Rec, 7))) - _
                                                CLng(.TextMatrix(Rec, 5)), "0")
                RS.Update
                ' ====================================================
            End With
            RS.Close:   Set RS = Nothing
        Next
        ' #########################################################
        ' จบกระบวนการขั้นตอนของการทำงานแบบ 1 To Many
        ' ขั้นตอนที่ 4 และ 5 สามารถทำได้พร้อมๆกันน่ะครับ ... ลองไปคิดเองเป็นการบ้านด้วยล่ะกันครับ
        ' #########################################################
    
Conclusion:
กระบวนการบันทึกข้อมูลนี้ มันกระทำได้รวดเร็วมากน่ะครับ และจะเห็นได้อย่างชัดเจนเลยว่า มันไม่ได้มีกลไกอะไรที่สลับซับซ้อนมากมายแต่อย่างใดเลย มันเป็นวิธีการที่คิดง่ายๆแบบคณิตศาสตร์พื้นฐาน มองดูเหมือนตรรกะศาสตร์ขั้นสูง ทั้งๆที่มันก็มีเพียงแค่จริง กับ เท็จเท่านั้นเอง ... การที่จะสร้างนักพัฒนาซอฟท์แวร์รุ่นใหม่ๆ ตั้งแต่อยู่ในรั้วสถาบันการศึกษานั้น หลักที่สำคัญ คือ ต้องสร้างพื้นฐานทางปฏิบัติให้แน่น และ ต้องหาตัวอย่างจริง ของจริง มาสอน มาถ่ายทอด ให้กับเด็กๆเหล่านี้ ได้เห็น ได้สัมผัส หากทำได้แบบนี้ เราก็จะมีโอกาสสูงในการผลิตบุคลากรที่พร้อมจะทำงานจริงได้เลย หลังจากจบการศึกษาออกมาแล้วโดยทันที ... นี่คือสิ่งที่ผม "คิด" และ "ทำ" อย่างไรให้เด็กรุ่นใหม่ๆ ได้รับข้อมูล ความรู้ ที่ถูกต้อง เป็นจริง สามารถนำไปต่อยอดได้ ...

เพิ่มเติม

 


ร่วมแสดงความคิดเห็น

[ความเห็นที่:  1] จากคุณ : ทองก้อน เมื่อ 6/5/2553 8:57:53

วันที่ 1-2 พ.ค. ข้อเข่าเกิดการอักเสบ บวมเป่งเดินแทบไม่ไหว ขยับทีเส้นเอ็นก็ยึด เจ็บปวดรวดร้าวมากมาย พอเริ่มๆจะหายดี กระดูกรอยต่อระหว่างมือ กับ นิ้วชี้มือขวา เกิดการบวมขึ้นมาอีก โอว ... สงสัยจะเป็นโรคทันสมัย อินเทรนด์ คือ โรค CVS (Computer Vision Syndrome) ซึ่งมีผลกระทบกับกล้ามเนื้อและข้อกระดูก แต่สายตายังดีอยู่ครับ ...

ชีวิตของทองก้อน กับ การยึดพื้นที่หน้าจอคอมพิวเตอร์ทั้งวัน ... มีใครจะมาขอคืนพื้นที่หรือเปล่าล่ะเนี่ย ... 55555+

[ความเห็นที่:  2] จากคุณ : dos_network เมื่อ 6/5/2553 9:07:19  IP: 118.175.90.37

Test Test Test
อืม OK ใช้ได้ครับ
55555+

[ความเห็นที่:  3] จากคุณ : ทองก้อน เมื่อ 6/5/2553 9:17:32

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

[ความเห็นที่:  4] จากคุณ : Mr.Den เมื่อ 6/5/2553 21:48:21  IP: 58.9.177.146

ขอให้หายไวไว นะครับ.

[ความเห็นที่:  5] จากคุณ : Watchara เมื่อ 15/5/2553 9:21:09  IP: 58.9.22.16

ขอให้ท่าน อ.ทองก้อน หาย มาม่า ผมได้ประโยชน์ จากเว็บ นี้ มาก
ทำให้เริ่มเรียนรู้ การเขียนอย่างเป็นระบบ เมื่อ ก่อน มั่วมากๆๆ ครับ 

[ความเห็นที่:  6] จากคุณ : บู้ เมื่อ 20/5/2553 13:39:59  IP: 172.17.8.39

ทำขายไหมครับวันนั้นติดต่อไปเรื่องโปรแกรมบาร์โค้ด แล้วยังหาโปรแกรมมาเก็บข้อมูลสินค้าไม่ได้เลย ราคาูถูกก็ใช้งานไม่ค่อยจะได้ แพงบริษัทมันก็ไม่อยากเสียเงินเยอะ คือมีคนจ้างให้วางระบบบาร์โค้ดโรงงาน ก็คิดว่าจะเสนอโปรแกรมบาร์โค้ดของเว็บนี้ไป แต่ยังหาโปรแกรมมาเก็บข้อมูลสินค้าไม่ได้ คงต้องประยุกต์จากโปรแกรมที่แถมมากับชุด Point Of Sale ระบบงานประมาณว่าจะผลิตสินค้าขึ้นมาก็จะน้ำวัตถุดิบ 10 กิโลกรัม มาแบ่งเป็นถุงละ 1 กิโลกรัม ติดบาร์โค้ดแล้วยิงเก็บข้อมูลไว้ว่าผลิตขึ้นมาเท่าไร แล้วนำไปรวมกับสารเคมีผลิตออกมาเป็นสินค้าบาร์โค้ดใหม่พักเก็บไว้หรือเอาไปบรรจุเป็นผลิตภัณฑ์ติดบาร์โค้ดเป็นสินค้าออกมา (มีการนำเข้าและออกสินค้าจะได้รู้ว่าขั้นตอนใดเหลือวัตถุดิบเท่าไรเพราะปัจจุบันบริษัืืทผลิตขาดบ้างเกินบ้าง) พี่น้องท่านใดมีโปรแกรมลักษณะนี้สนใจลองเสนอราคาและตัวอย่างโปรแกรมได้ที่ sanon-k@hotmail.com ปล.ออกรายงานด้วยนะครับ เช่นเหลือวัตถุดิบอะไรเท่าไรบ้าง

[ความเห็นที่:  7] จากคุณ : dos_network เมื่อ 21/5/2553 15:59:51  IP: 118.175.90.37

ต้องการด่วนแค่ไหนล่ะครับ
  - ด่วนมากก็คงต้องซื้อโปรแกรมสำเร็จรูปแล้วล่ะครับ แต่ก็อาจจะไม่ได้ตามที่เราต้องการมากนัก
  - ถ้าไม่ด่วนก็อาจจะจ้างทำ หรือเขียนโปรแกรมเอง เอาตามที่เราต้องการครับ

[ความเห็นที่:  8] จากคุณ : jirata เมื่อ 22/5/2553 12:29:58  IP: 110.49.204.192

ตอนนี้พี่ทองก้อนเอาอะไรมาพันแขนอยู่หรือครับ
ขอบคุณสำหรับบทความดีๆ

[ความเห็นที่:  9] จากคุณ : ทองก้อน เมื่อ 25/5/2553 11:29:14

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

รอบหน้าเป็นอีก หาหมอนวดเลยดีกว่ามั้งเนี่ย 55555+

[ความเห็นที่:  10] จากคุณ : nittaya เมื่อ 29/6/2553 14:51:45  IP: 202.57.140.226

พี่คะ  และถ้าจะทำระบบ POS ในลักษณะของคล้ายๆ กะ 7  โดยการเก็บข้อมูลของแต่ละร้านเอาไว้ในเครื่องที่ร้าน พอถึงกำหนดเวลา เช่น 12.00 น. ก้อให้ที่ร้านทำการอัพรายการขายทั้งหมดขึ้น server ที่เป็นระบบ online เนี่ย จะต้องทำอย่างไรบ้างคะ  ขอคำชี้แนะหน่อยค่ะ

[ความเห็นที่:  11] จากคุณ : gg เมื่อ 6/7/2553 14:50:35  IP: 113.53.80.68

และถ้าจะทำระบบ POS ในลักษณะของคล้ายๆ กะ 7  โดยการเก็บข้อมูลของแต่ละร้านเอาไว้ในเครื่องที่ร้าน พอถึงกำหนดเวลา เช่น 12.00 น. ก้อให้ที่ร้านทำการอัพรายการขายทั้งหมดขึ้น server ที่เป็นระบบ online เนี่ย จะต้องทำอย่างไรบ้างคะ  ขอคำชี้แนะหน่อยค่ะ

[ความเห็นที่:  12] จากคุณ : ทองก้อน เมื่อ 7/7/2553 9:03:23

1. แบบง่ายๆก็ Export ข้อมูลที่จำเป็น (วันต่อวัน) ส่งผ่านเมล์ ส่วนปลายทางก็ค่อยอ่านข้อมูลเข้าไป (Import)
2. ตั้งเวลาในโปรแกรมเอาไว้ทุกๆ 12.00 น. ให้ส่งข้อมูลผ่าน FTP ไปยัง Server
3. ใช้ ASP/PHP ในการโอนข้อมูล
4. ทำ Virtual Private Network (VPN)

เท่าที่ผมนึกได้ตอนนี้น่ะครับ ...

[ความเห็นที่:  13] จากคุณ : เพ็ญพักตร์ เมื่อ 30/7/2553 22:04:30  IP: 110.49.193.167

อยากสมัครเป็นสมาชิกค่ะ
จะต้องทำอย่างไรค่ะ

[ความเห็นที่:  14] จากคุณ : เพ็ญพักตร์ เมื่อ 3/8/2553 21:13:44  IP: 110.49.193.206

อยากเป็นสมาชิกค่ะ
จะต้องทำอย่างไงค่ะ

[ความเห็นที่:  15] จากคุณ : dos_network เมื่อ 4/8/2553 9:59:34  IP: 118.175.90.37

สมัครได้ที่เว็บบอร์ดครับ
http://www.g2gnet.com/Forum

[ความเห็นที่:  16] จากคุณ : Zoul เมื่อ 18/8/2553 12:38:17  IP: 115.31.176.66

Very good 
Thanks

[ความเห็นที่:  17] จากคุณ : mot เมื่อ 6/9/2553 10:26:03  IP: 124.120.247.233

ขอบคุณมากๆ พอดีโปรแกรมติด Error อยู่

[ความเห็นที่:  18] จากคุณ : best2009 เมื่อ 23/9/2553 0:39:29  IP: 113.53.60.245

ผมใช้โปรแกรมขายอยู่ (ซื้อมา)แต่อยากมาศึกษาการเขียนแบบที่แนะนำ คิดว่าเป็นประโยชน์มากๆช่วยแนะนำทางmail:yapattaya@hotmail.com

[ความเห็นที่:  19] จากคุณ : ปัทมา เมื่อ 25/9/2553 15:48:51  IP: 114.128.218.148

อยากซื้อโปรแกรม  มีคู่มือการใช้หรือเปล่า
จาก  08574494000

[ความเห็นที่:  20] จากคุณ : nany เมื่อ 27/9/2553 5:53:56  IP: 222.123.132.174

grid ตัวนี้มีสอนใหม่ครับ ชอบ แบบ group จัง

[ความเห็นที่:  21] จากคุณ : nontapoom13 เมื่อ 27/9/2553 6:25:03  IP: 180.183.6.103

สวัสดีครับ อ.ทองก้อน เนื่องจากเห็นข้อความที่บอกเรื่องสุขภาพของ อ.ทองก้อน ว่า มีอาการ ปวด ข้อเข่า หรือข้อเท้า
และหาสาเหตุไม่ได้ ผมอยากเอาประสบการ์ณที่เป็น คล้ายๆ (แต่ผมว่าน่าจะอาการเดียวกันกับ อ.นะครับ) คือ ผมเองอายุแค่ 27 แต่มีอาการเหมือนที่ อ.ทองก้อน เป็น คือ อยู่ๆ ก็ ปวดข้อเท้า และบวมขึ้นมาซะงั้น เดินไม่ได้ สัก 1-2 อาทิตย์ ไปหาหมอก็ได้ยา คลายเส้น กับยาแก้ อักเสบ พอหายได้สัก เกือบพัก ก็จะกับมาเป็นอีก ไม่เป็นที่ข้อเท้า ก็จะเป็นที่ข้อพับ เข่า ปีนี้เป็นประมาณ สามรอบ นับจาก วันที่ 1 มกราคม 2553 ครั้งสุดท้าย ไปหาหมอ ก็เจอฉีดยา ตรงบริเวร แก้มก้น ข้างที่ปวดขา ซึ่งผมมองย้อนไปตอน อายุ 18 ช่วงนั่น ซ้อมเต้นเชียร์แบบที่มีการต่อตัว หรือ ยิมนาสติก มาประกอบ แล้ววันหนึ่ง นั่งในรถยนต์อยู่ดีๆ พอจะลงรถ หลังผมกับยืนไม่ได้ซะงั้น เส้นยึด เป็นเหมือนคนหลังค่อม และมีอาการปวด ทั้งหลังและขา ไปหาหมอ (เพราะวันนั้นต้องเต้นโชว์) บ่ายสามโมง หมอฉีดยา ให้มาหนึ่งเข้ม ที่แกล้มก้นเหมือนกับตอนแรก หลังจากนั่น 6 โมง เย็น ผมสามารถตีลังกาได้สบาย (ผ่านอดีตมาแหละ) ทีนี้ผมเลยตั้งข้อสังเกตุ ว่าทำไมหมอต้องฉีดยาคล้ายกล้ามเนื้อที่ก้น ก็เลยถามช่างเลี่ยมกอบพระ หน้าบ้าน (แกเป็นหมอนวดจับเส้น ระดับเซียน เพราะแก้เคยจับเส้นให้ผมแล้วหาย แต่ไม่หายขาด เพราะไม่เชื่อแก แกบอกผมให้เปลี่ยนรองเท้า เป็นรองเท้าพื้นเรียบ เพราะปกติผมใส่รองเท้ายี่ห้อ airo soft พื้นมันจะ เว้าๆ นูนๆ ตอนแรกก็เปลี่ยนพอหายก็กับมาใส่ เพราะแกไม่บอกว่าเพราะอะไรถึงให้เปลี่ยน พอรอบสองเป็นอีก แกถึงบอกว่า เส้นประสาทคนเรามันอยู่ที่เท้า แกเลยจับเท้าผม มากดจุด ! เออ วุ้ย กดตรงไปเจ็บตรงไหนก็บอกถูกหมดเลย) ทีนี้ผมก็เลยลองจับไล่เส้นตัวเองดูตอนปวดรอบที่สามของปี รอบนี้เป็นที่ข้อพับเข่าข้างขวา ไล่ลงไปทางข้อเท้า ก็จะไปเจ็บตรงที่เคยเจ็บที่ข้อเท้า ไล่มาด้านบน ก็จะมาเจ็บๆ มันๆ ตรงแกล้มก้น (จุดนี้แหละที่ผมอธิบายถึง ตอนสมัยเด็ก) สรุป สาเหตุมาจาก เส้นยึด ด้วยการนั่ง และใช้ท่าเดิมเป็นเวลานาน ๆ แล้ววันนึงอาจมีอาการ ปวดร้าว มาที่คอ และไหล่ 
วิธีแก้ของผมคือ 1. เปลี่ยนรองเท้ามาใส่รองเท้าพื้นเรียบตาม ช่างเลี่ยมกอบพระ  2. ถ้าพอเรานั่งแล้วจะรู้สึกตึงๆ ตรงขาให้ลุกแล้วยืด เส้น หรือเปลี่ยนท่านั่ง  เพราะมันจะรู้สึกถึงตรงแกล้มก้น 3. เปลี่ยนเก้าอี้นั่ง 
ปัจจุบัน อาการเดิมยังไม่มาเยือน แต่มันเป็นแบบนี้มาประมาณ 2 ปีแล้ว 
ไม่รู้ว่า อ.ทองก้อน เป็นแบบเดียวกับผมไหม ลองดูครับ ไม่น่าจะมีอะไรมาก คิดว่าน่าจะเรื่อง การใช้ท่าเดิมซ้ำ ๆ นานๆ จึงทำให้เส้นยึด พวกขับรถประจำทาง ก็จะเป็นนะครับ
ส่วนเรื่องความรู้ทางด้านโปรแกรม กำลังอ่านบทความเก่าๆ อยู่ ครับ
ด้วยความเคารพ

[ความเห็นที่:  22] จากคุณ : สมปอง เมื่อ 27/9/2553 10:13:15  IP: 180.183.10.60

อาจารย์ครับทำไม่เวลาเราค้นหาข้อมูลแล้วเกิดข้อมูลนั้นแสดงซ้ำกัน 2 ครั้งอะครับเกิดจากอะไรครับ ตัวอย่างนะครับ
ผมมีข้อมูลชื่อ 123456 แต่พอค้นมันขึ้นมาละมันเกิดแสดง 2 ครั้ง ทั้งๆๆที่ข้อมูลตัวนี้มีอยู่แค่ 1 ชื่อเท่านั้นเองครับ

[ความเห็นที่:  23] จากคุณ : ทองก้อน เมื่อ 27/9/2553 11:15:50

ขอขอบคุณสำหรับคำแนะนำของคุณ nontapoom13 ด้วยน่ะครับ ...
สำหรับผมยังหาข้อสรุปไม่ได้ครับว่าเป็นอะไรกันแน่ จะเก๊าท์ ก็ไม่เก๊าท์ หรือ ข้ออักเสบ เปลี่ยนหมอมา 4 คนแล้ว ทั้งเจาะเลือดตรวจ มันก็ไม่ผิดปกติว่ามีกรดสูงเกินไปนัก แต่ไม่เป็นมาสัก 3 เดือนได้แล้วมั้งครับ ซึ่งผมก็หลีกเลี่ยงอาหารต้องห้ามของโรคเก๊าท์ เช่น พวกสัตว์ปีก เครื่องใน ฯลฯ อ้อ ... เบียร์นี่ไม่แตะเลย ซดแต่เหล้าอย่างเดียว 55555+ ... ไม่รู้เหมือนกัน หรืออาจจะเป็นเพราะผมไปสะเดาะเคราะห์มา ด้วยการเดินสายนวดแผนโบราณ กะเอาให้ครบ 7 แห่ง ตอนนี้ไปได้ 4 ที่แล้ว ก็เล็งๆอยู่ว่า 3 แห่งที่เหลือจะไปนวดแผนปัจจุบัน (อาบอบนวด) ดีหรือเปล่า 55555+ ... เพราะที่ขอนแก่นมีอยู่ 3 ที่พอดีเลยครับ เอิ๊กๆๆๆๆๆ

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

[ความเห็นที่:  24] จากคุณ : สมปอง เมื่อ 30/9/2553 8:54:48  IP: 222.123.196.67

อ.ครับ แก้ได้แล้วครับแต่มาติดอีกอย่างหนึ่งอะครับก็ลองแก้ทุกอย่างแล้วอะครับมะรู้ว่ามันติดตรงใหนอะครับหรือไม่ผมก็ยังแก้ไม่ถูกทางมันเกิด Error Method 'Open' of object'_Recordset' failed อะครับ

[ความเห็นที่:  25] จากคุณ : ทองก้อน เมื่อ 30/9/2553 10:45:37

ตอบคุณสมปอง: Zip File ทั้งโปรเจค ส่งกลับมาที่เมล์ผม ให้ผมดูดีกว่าครับ แบบนี้ตอบยากมากเลยครับ หรือลอง
- ดู SQL Statement ที่ปรับเปลี่ยนไป
- ดู หรือ Debug บรรทัดคำสั่งตอนสั่ง RS.Open ... ให้ลองปรับ CursorType กับ LockType ดูใหม่

[ความเห็นที่:  26] จากคุณ : สมปอง เมื่อ 30/9/2553 11:49:11  IP: 222.123.196.67

ได้ละครับ อาจารย์ครับผมไปเปลี่ยนชื่อที่ตารางครับขอบคุณมากครับ

[ความเห็นที่:  27] จากคุณ : ทองก้อน เมื่อ 30/9/2553 12:18:00

ผมทายว่าอนาคตของคุณสมปองต้องเป็นครูอย่างแน่นอน ฟันธง+คอนเฟิร์ม ... เพราะ ? ... อ้าว ก็ ผิดเป็นครู ยังไงล่ะครับ 55555+ ... มุขฮากระจายในวงเหล้า เอิ๊กๆๆๆๆ

[ความเห็นที่:  28] จากคุณ : สมปอง เมื่อ 30/9/2553 13:07:36  IP: 222.123.196.67

555555555555555555++++++++++++++++ ฮิฮิฮิ

[ความเห็นที่:  29] จากคุณ : nontapoom13 เมื่อ 1/10/2553 0:54:41  IP: 125.27.64.247

สวัสดีครับ อาจารย์ ถ้าผ่านมาเที่ยว พัทยา ก็มา นวดแผนปัจจุบันที่ บริษัทที่ผมทำงานนะครับ หน้าจะหรูสุดในพัทยาแล้วล่ะ เนี่ยผมก็ยังกลุ้มอยู่เลย มาทำงานไอทีธรรมดา ดันหาเรื่องไปเป็นทั้งแอดมิน โปรแกรมมั่ว และก็เว็บมาสเตอร์
ตอนนี้เลยสรุปไม่ถูกว่าทำตำแหน่งอะไร เพราะอะไรที่เห็นว่าผมทำได้ นายสั่งให้ทำเลย งานเข้าละครับ เรียนมาก็ไม่ค่อยรู้เรื่อง ตอนนี้ต้องเขียนโปรแกรม อาบ อบ นวด ให้บริษัท เลยว่าจะจับเอา VB นี้แหละ มาเขียน เ่ลยมาหาข้อมูลในเว็บนี้ สงสัย ต้องเสียค่า ครู ด้วยการจัดหมอ สักรอบล่ะมั้ง 555++

[ความเห็นที่:  30] จากคุณ : ทองก้อน เมื่อ 1/10/2553 11:45:33

ตอบคุณ nontapoom13: แบบนี้น่ะครับ หากติดปัญหาเรื่องการเขียนโปรแกรม น่าจะปรึกษาพวกหมอๆที่ทำงานได้นี่นา ... ก็แหมพวกหล่อนคงต้องเรียนเก่งแหละน่า ไม่งั้นก็คงไม่ได้เป็นหมอหรอกครับ 55555+

ผมไม่ค่อยได้แวะพัทยาเลยครับ ออก By Pass รีบตรงดิ่งไปนั่งก๊งเหล้าที่หาดพยูน บ้านฉาง ระยอง ทันที ... เพื่อนๆผมเขาทำงานที่มาบตาพุดกันเยอะมาก (แต่มันชอบพักกันที่บ้านฉาง) ... หากพวกมันรู้ว่าผมจะไปทีไร เขาจะเอาเรือออกไป ใช้หนังสติ๊กยิงปลาหมึกให้ผมกิน อิอิอิอิอิ ... ค่าที่พักโรงแรมก็ไม่เสีย เพราะเพื่อนผมเขาจะยกบ้านให้ผมนอนแทน ... หน้าร้อนปีหน้ากะจะไปอีก ไม่รู้พวกมันยังอยากจะต้อนรับผมหรือเปล่า เพราะไปทีไร "ไหล" อยู่ต่อทุกที แบบไม่มีกำหนดกลับ ... ไม่ใช่อะไรหรอก ... พวกมันต้องมาคอยสลับผัดเปลี่ยนมานั่งกินเหล้ากะผมไงล่ะ เอิ๊กๆๆๆๆ ...

หมายเหตุ: วันนี้ส่งงานเรียบร้อย รับเช็คมาแล้ว กำลังเล็งๆอยู่ว่า วันนี้จะไปสะเดาะห์เคราะห์ที่ไหนดี 55555+

[ความเห็นที่:  31] จากคุณ : sr เมื่อ 2/10/2553 19:34:32  IP: 124.122.15.171

thank

[ความเห็นที่:  32] จากคุณ : อยากเก่ง เมื่อ 8/10/2553 14:24:36  IP: 58.8.226.175

ขอถาม อ. ว่าถ้าต้องทำหน้าจอขาย แล้ว มีการขายหลายเครื่องพร้อมกัน มีวิธีป้องกันอย่างไรบางครับ เพื่อไม่ให้ข้อมูลชนกัน หรือ เกิด error ขอคำแนะนำหน่อยครับ และอยากให้ อ. ช่วยยกตัวอย่างด้วยได้หรือปล่าวครับ

[ความเห็นที่:  33] จากคุณ : ทองก้อน เมื่อ 9/10/2553 14:00:30

ดูตามโค้ด และ วิธีการได้เลยครับ ... เราจะสร้าง Primary Key  ใหม่ก็ตอนช่วงเหตุการณ์ Save เท่านั้น การทำงานมันเร็วมาก รับรองได้เลยว่าไม่พลาดครับ

[ความเห็นที่:  34] จากคุณ : อยากเก่ง เมื่อ 13/10/2553 17:24:20  IP: 58.8.226.138

ขอบคุณครับ อ. ทองก้อน ขนาดผมไม่เคยเข้ามาถามบ่อย ๆ อ. ยังตอบให้ ขอชื่นชมครับผม

แต่ผมยังสงสัยที่ อ.ตอบ ว่าการทำงานมันเร็วมาก หมายถึงว่า เมื่อมีการ กด Enter Save ข้อมูล พร้อมกัน 2-3 เครื่อง และต้องไป Update ที่ Table เดี่ยวกัน พร้อมกัน มันจะไม่ Error ใช่ไหมครับ (หมายถึง Database MS Access) 

สุดท้าย ผมขอสมัคร เป็น ลูกศิษย์ด้วยคนน่ะครับ ด้วยความนับถือ

[ความเห็นที่:  35] จากคุณ : dos_network เมื่อ 14/10/2553 16:55:49  IP: 118.175.90.37

นั่งยัน ยืนยัน นอนยัน อีกคนครับ
รับรองว่าไม่ซ้ำกันครับ

[ความเห็นที่:  36] จากคุณ : อยากเก่ง เมื่อ 15/10/2553 10:22:34  IP: 58.8.133.233

ไม่ทราบว่า อ. หรือ พี่ dos_network เคยใช้ HelpVistaXPDiamond 2008 ตัวนี้ไหมครับ
เพราะผมลองแล้ว object ส่วนใหญ่ไม่รับภาษาไทยอ่ะครับ 
แล้วเราพอจะมีวิธีแก้ไหมครับ อยากใช้น่ะครับ เพระาเห็นว่าสวยดี
รบกวนอีกแล้วครับ

[ความเห็นที่:  37] จากคุณ : เจมส์ เมื่อ 16/11/2553 14:15:23  IP: 223.207.170.14

ขอ โปรแกรม VB6 เพิ่ม ลบ แก้ไข ค้นหา รายงาน  
หน่อยครับ ขอบคุณล่วงหน้าครับ
ronnarong11@hotmail.com

[ความเห็นที่:  38] จากคุณ : dos_network เมื่อ 16/11/2553 16:19:35  IP: 118.175.90.37

ตอบคุณ เจมส์ 
สิ่งที่ต้องการในเว็บนี้มีให้หมดแล้วครับ ลองหาดูดีๆครับ
http://www.g2gnet.com/News/activeNews_categories.asp?catID=4

[ความเห็นที่:  39] จากคุณ : Superman เมื่อ 19/11/2553 21:30:17  IP: 117.47.178.148

ไม่ได้เข้าเกือบปี คิดถึง ป๋าทองก้อน จริงๆครับ 

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

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

[ความเห็นที่:  40] จากคุณ : playvolcom เมื่อ 28/11/2553 1:10:24  IP: 115.87.202.115

ผมขอถามหน่อยนะครับ ผมลองทำ โปรแกรมนี้แล้ว   เวลาผมกด สั่งพิมพ์ Report  

ทำไม Report  ถึงได้  compile Error   varible not  defined อ่ะครับ

พยายามลองแล้วครับ ไม่ได้ ครับ  ตรง  Private Sub PrintReport   นะครับผม

ขอความกรุณาด้วยครับ

[ความเห็นที่:  41] จากคุณ : นุ้ย เมื่อ 28/11/2553 12:40:26  IP: 203.156.69.189

สงสัยแบบเดียวกับคุีณอยากเก่งเลยคะว่า ถ้ามีกา่รขายจากหลายๆเครื่องพร้อมๆกัน จะมีปัญหาในการตัดสต๊อกหรือเวลาแสดงเลขที่บิล เช่น ถ้าเครื่อง1 กำลังทำรายการขายที่บิล INV5300008 แต่ยังไม่ save แล้วมีอีกเครื่องมาทำรายการขายอีกอย่างงี้เลขที่บิลจะแสดงเป็น NV5300008 ซ้ำกันรึเปล่าคะ

[ความเห็นที่:  42] จากคุณ : ทองก้อน เมื่อ 29/11/2553 11:27:03

ตอบคุณนุ้ย:
ขอให้สังเกตว่าการสร้าง Primary และ การสร้างรหัส Invoice ผมจะทำอยู่ในขั้นตอนสุดท้าย คือ การบันทึกผล (โปรแกรมย่อย SaveData) ซึ่งกระบวนการนี้ทำงานได้รวดเร็วมาก โอกาสที่จะมีรหัสซ้ำกัน จึงเป็นไปได้ยาก (หรือ ไม่มีโอกาสเลย) ... ผมเขียนโปรแกรมขายให้กับลูกค้า (ไม่รู้กี่รายแล้ว) ก็ใช้หลักการเดียวกันนี้แหละครับ ผมยังไม่เคยเจอปัญหา หรือ FeedBack กลับมาสักครั้งเลยว่ารหัสมันซ้ำกันครับผม

ลักษณะนี้ผมเรียกว่า Flow Control (ไม่เอา ER-Model มาอธิบาย) คือ การเรียงลำดับเหตุการณ์ต่างๆที่เกิดขึ้น

[ความเห็นที่:  43] จากคุณ : ทองก้อน เมื่อ 29/11/2553 11:33:15

ตอบคุณ playvolcom:
Varible not  defined ... คือ การที่ไม่ประกาศตัวแปรขึ้นมาใช้งานก่อน
- บรรทัดบนสุดของทุกๆฟอร์ม จะมีคำว่า Option Explicit นั่นคือเป็นการบังคับให้เราต้องประกาศตัวแปรขึ้นมาใช้งานก่อนเสมอ เช่น Dim i As Integer ... คุณลองใส่เครื่องหมาย Single Quote หน้าบรรทัดคำสั่งนี้ Error ก็จะหายไปเอง (วิธีการนี้ไม่ขอแนะนำ)

- คุณเผลอไปลบการประกาศตัวแปรออกไป ลองหาดูครับว่าตัวไหนหายไป (เดาว่าน่าจะเป็น Criteria ... ซึ่งผมจะประกาศเอาไว้ บรรทัดล่างต่อจาก Option Explicit)

[ความเห็นที่:  44] จากคุณ : คอมฟอด เมื่อ 9/12/2553 10:23:28  IP: 125.26.65.150

หน้าจะมีตัวอย่างเยอะกว่านี้เช่น การปันผล สมัครสมาชิก

[ความเห็นที่:  45] จากคุณ : มือใหม่ เมื่อ 12/12/2553 18:54:55  IP: 223.206.121.150

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

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

หรือ อาจารย์ ช่วยบอกแนว ทาง ให้ หน่อย ก็ดีครับ 

[ความเห็นที่:  46] จากคุณ : มือใหม่ เมื่อ 16/12/2553 16:32:37  IP: 110.164.190.203

ทำได้แล้วครับ... 

โชคดีจริง ๆ ที่ได้มาเจอ เวปนี้...  ถ้าไม่ได้มาเจอเวปนี้ก็คง 
เรียนรู้ ได้เร็วขนาดนี้ 

ขอให้ ท่านจง มีสุขภาพ ที่ ดี มี แรง ใจที่จะ สร้างสรรค์ผลงาน 
ให้พวกเราได้ศึกษากันเรื่อย ๆ นะ ครับ

ขอคุณมากครับ

[ความเห็นที่:  47] จากคุณ : วิน เมื่อ 31/1/2554 9:47:11  IP: 125.27.141.203

เขียนโปรแกรมVB.Net ฐานข้อมูล Sql Sever 2005 รันบนระบบเครือข่ายแล้ว เวลาบันทึกข้อมูลพร้อมกันมันทำงานไม่เป็นไปตามลำดับ

[ความเห็นที่:  48] จากคุณ : popmx เมื่อ 2/2/2554 22:55:15  IP: 118.173.116.75

ดีมากคับ

[ความเห็นที่:  49] จากคุณ : ชัช เมื่อ 9/2/2554 15:21:34  IP: 101.102.103.66

สุดยอดครับพี่น้องครับ

[ความเห็นที่:  50] จากคุณ : phisit เมื่อ 21/2/2554 12:28:50  IP: 115.87.247.224

DDDDDDDDDD

[ความเห็นที่:  51] จากคุณ : baw เมื่อ 21/3/2554 14:17:52  IP: 118.173.146.108

เยี่ยมมาก

[ความเห็นที่:  52] จากคุณ : praditsri19 เมื่อ 28/3/2554 17:48:41  IP: 125.26.190.135

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

[ความเห็นที่:  53] จากคุณ : praditsri19 เมื่อ 28/3/2554 17:50:14  IP: 125.26.190.135

ต่อ ความเห็นที่:  52  
เอาแบบกดปุ่มบันทึกปั้บ ใบเสร็จก็แสดงออกมาตามเลขที่ที่เราบันทึกไปครับ

[ความเห็นที่:  54] จากคุณ : ทองก้อน เมื่อ 1/4/2554 11:04:45

ตอบคุณ praditsri19:
ไม่ได้เอาโค้ดใส่ไว้ เพราะกะให้เอาไปทำเพิ่มเติมกันเองครับ แต่ดูตัวอย่าง (จริง) ของ Data Report ได้ที่
http://www.g2gnet.com/Forum/forum_posts.asp?TID=677

แรกๆที่ศึกษา VB ก็ไม่ได้เขียนออกมาแนวนี้หรอกครับ เพราะช่วงนั้นหาข้อมูลได้ยากมากๆ จำได้ว่าซื้อ TextBook VB4 ราคา 1,250 บาท มาอ่าน (แต่มันเป็น DAO น่ะ) และก็ต้องอาศัยประสบการณ์ กับความขยันเอา จากนั้นก็ค่อยๆปรับสไตล์การเขียนโค้ดมาเรื่อยๆจนมาลงตัวด้วยวิธีที่เห็นนี่แหละครับ ... บอกได้เลยว่า พอมาศึกษา VB.Net ผมก็ไม่ได้ปรับอะไรใหม่เลย

[ความเห็นที่:  55] จากคุณ : jjlugchup เมื่อ 9/5/2554 16:13:21  IP: 125.24.207.167

ฝาก Freeware สำหรับออกรายงานไว้สัก 1 ตัวได้มั้ยคะ คุณWebmaster
Express report ค่ะ พัฒนาในเมืองไทย ฝากไว้ช่วยทดสอบด้วยนะคะ
เป็นโปรแกรมออกแบบและสั่งพิมพ์รายงานมาพร้อม ActiveX Control
Express Report Application เป็นอีกทางเลือกหนึ่งสำหรับการออกรายงาน ที่มีแนวคิดแตกต่างไปจากเดิม
- ไม่มีการผูกติดแหล่งข้อมูล (Data source) ในหน้าจอการออกแบบรายงาน
- ไม่จำเป็นต้องศึกษาวิธีการเขียน Code มากมายเพื่อใช้งาน
- สามารถออกแบบรายงานได้ทันที่ ที่มีข้อมูลในฐานข้อมูล
- โปรแกรมปรับขนาดกระดาษให้อัตโนมัติ ในกรณีที่ขนาดของกระดาษที่ออกแบบ ไม่ตรงตามขนาดของกระดาษ ที่เครื่องพิมม์ยอมรับได้ ได้ตามขนาดตามเครื่องพิมพ์ เช่น หากในออกแบบรายงาน กำหนดขนาดกระดาษไว้ที่ A3 เมื่อเวลาไปใช้งานจริง เครื่องพิมพ์สามารถพิมพ์ได้แค่ A4 โปรแกรมจะปรับขนาดการพิมพ์ให้เหลือเพียง A4 โดยอัตโนมัติ
ดาวน์โหลด Setup Filehttp://www.digitalworks.th.com/log/dlCounter.php?file=ExpressReport-20110509.zip
ดาวน์โหลด คู่มื่อ http://www.digitalworks.th.com/download/SoftwareManual/DtcPrintDesigner.pdf

[ความเห็นที่:  56] จากคุณ : dewx3 เมื่อ 12/7/2554 12:48:57  IP: 223.204.85.169

เยี่ยมมาก

[ความเห็นที่:  57] จากคุณ : pui เมื่อ 18/7/2554 12:03:12  IP: 125.26.198.170

เป็นโปรแกรมที่ดีที่สุด ที่กำลังตามหามานานแล้ว

[ความเห็นที่:  58] จากคุณ : napa เมื่อ 22/7/2554 7:04:32  IP: 101.51.88.223

เป็นโปรแกมที่ดีค่ะ

[ความเห็นที่:  59] จากคุณ : nova เมื่อ 28/8/2554 22:46:10  IP: 110.49.232.95

ทำโปรแกรมเกี่ยวกับระบบสหกรณ์โรงเรียน แต่ต้องสร้างฐานข้อมูลอะไรบ้างคับ

[ความเห็นที่:  60] จากคุณ : ทองก้อน เมื่อ 30/8/2554 9:00:43

ตอบคุณ nova:
ต้องเพิ่มเรื่องของสมาชิกเข้าไปอีกครับ รายละเอียดที่เหลือก็ต้องดูอีก เช่น
- มีระดับสมาชิกมั้ย เช่น ระดับ A ซื้อได้ราคานี้ ระดับ B ซื้อได้ในอีกราคาหนึ่ง
- การปันผลเป็นยังไงบ้าง คิดตามระดับข้างบนหรือเปล่า หรือคิดกันตาม % ที่มีหุ้น
อื่นๆ

[ความเห็นที่:  61] จากคุณ : 125.26.254.47 เมื่อ 28/9/2554 20:38:23  IP: 125.26.254.47

เป็นกรณีศึกษาอีกทางหนึ่งสำหรับผู้เริ่มทำครับ ขอบคุณมากครับ

[ความเห็นที่:  62] จากคุณ : Fang เมื่อ 9/10/2554 23:51:28  IP: 202.29.53.1

สวัสดีครับตอนนี้ผมเรียนระบบฐานข้อมูลผมได้ทำเรื่องร้านค้ามินิมาร์ท ในaccess ให้สามารถทำงานได้จริงแต่ผมไม่รู้จะเริ่มทำตรงไหนก่อนไม่รู้ว่าจะมีข้อมูลอะไรบ้างข้อมูลสินค้าควรประกอบด้วยอะไรบ้าตารางงการขายต้องอะไรบ้างผมขอดูตัวอย่างร้านค้ามินิมาร์ทหน่อยครับว่ามีขอมูลอะไรมาประกอบกันบ้างครับผมจึงจะได้ไปศึกษาต่อช่วยตอบผมหน่อยน่ะครับขอบคุณมากครับ

[ความเห็นที่:  63] จากคุณ : ออฟ เมื่อ 21/11/2554 16:39:23  IP: 110.77.237.15

ขอทดสอบหน่อย

[ความเห็นที่:  64] จากคุณ : ชัยวัฒน์ เมื่อ 15/12/2554 22:58:19  IP: 125.27.2.50

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

[ความเห็นที่:  65] จากคุณ : กีชาง เมื่อ 16/12/2554 8:50:27  IP: 182.52.134.103

ถ้าเป็นคอมมันจะลบไปทั้งก้อนเลยน่ะครับ แต่นี่เลือกหายเฉพาะสินค้าคงเหลือ มันน่าจะเกิดจากคนซะมากกว่าครับ

[ความเห็นที่:  66] จากคุณ : phithak เมื่อ 25/12/2554 18:41:26  IP: 101.51.11.102

ถ้าไม่มีพื้นถานเรื่องการใช้โปรแกม
ควรจะเริ่มที่ตรงไหนก่อนครับ( ขายหน้าร้าน)

[ความเห็นที่:  67] จากคุณ : Onapha เมื่อ 10/1/2555 12:12:46  IP: 58.8.100.76

ขอบคุณค่ะ

[ความเห็นที่:  68] จากคุณ : bslcom เมื่อ 28/1/2555 16:32:32  IP: 125.24.96.53

ขาย POS ครบชุด สุดหรู ของใหม่ ถูกที่สุด!! HP AP5000 ลดกระหน่ำกว่า 50% 
พิเศษ สินค้าใหม่แกะกล่อง จากศูนย์ HP แท้ๆ อุปกรณ์เสริม ครบชุดสวย หรู ดูดี เหมาะกับร้านสุดเลิศของท่าน  ครบชุด พร้อมอุปกรณ์ดังนี้
HP AP5000 (Core2Duo 3.0, RAM 3 GB, HDD SOLID STATE 64 GB) Toushscreen พร้อมที่ติดโฆษณาด้านหลังเครื่อง
+ POS POLE DISPLAY ALL  ป้ายแสดงราคาสินค้า + HP POS USB Keyboard + USB MINI MSR (WITH BRACKETS) + HP USB Barcode Scanner
+ USB SINGLE STATION RECEIPT PRINT ALL  พริ้นต์บิล ใบเสร็จ
 
พิเศษ 1 ชุด ราคา 45,000 บาท เท่านั้น    
จากปกติราคาตลาดที่ 1 ชุด รวมอุปกรณ์เสริม ราคา 100,000++ 
BSL COMPUTER
083 713 8882
www.bslcomputer.com

[ความเห็นที่:  69] จากคุณ : ลำดวน เมื่อ 29/2/2555 2:02:00  IP: 171.5.34.159

มี unlock มือถือ ไหมคะ
ไปที่ร้านเค้าบอกไม่มีนะคะ ว่ามันโบรานเกิน
Sony Ericson Experia 8 คะ
ไม่มีโทรใช้คะ
ลำดวน

[ความเห็นที่:  70] จากคุณ : นุ เมื่อ 1/3/2555 21:39:23  IP: 171.4.29.130

ขอแสดงความนับถือครับอาจารย์

[ความเห็นที่:  71] จากคุณ : ืn เมื่อ 30/3/2555 10:59:03  IP: 183.89.106.124

ขอบคุณ

[ความเห็นที่:  72] จากคุณ : moo เมื่อ 16/4/2555 11:24:02  IP: 27.55.11.116

รู้เกี่ยวกับ PHP ไหมครับ

[ความเห็นที่:  73] จากคุณ : เด็ก x เมื่อ 1/5/2555 16:50:17  IP: 113.53.165.152

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

[ความเห็นที่:  74] จากคุณ : bebeza เมื่อ 9/5/2555 18:05:20  IP: 58.8.150.231

รบกวนสอบถามผู้รู้ พอดีตอนนี้ทำโปรแกรมเก็บสต็อกสินค้าอยู่ค่ะ แต่ติดที่เรื่องวิธีการดึงของมูล(ประเภทสินค้า)  ที่มีอยู่ใน Access มาโชว์บน Combo box โดยที่เราไม่ต้องมานั่ง add ใน list ของCombo box ค่ะพอดีไม่ค่อยเก่ง เรื่องเขียนโค้ดด้วย เวลาดูตัวอย่างโปรแกรมที่มีในเว็บเลยไม่ค่อยเข้าใจค่ะ เพราะเริ่มลื้อฟื้นเขียนโปรแกรมจากการดูYoutube เอาค่ะ ตอนนี้เขียนโปรแกรมใกล้เสร็จแล้วติดแค่เรื่องนี้เรื่องเดียวค่ะ (ขอบพระคุณล่วงหน้านะค่ะ)

[ความเห็นที่:  75] จากคุณ : mongkol เมื่อ 31/5/2555 8:41:24  IP: 115.87.164.46

สุดยอดจริงๆๆครับ

[ความเห็นที่:  76] จากคุณ : หนึ่ง เมื่อ 2/8/2555 22:33:32  IP: 110.49.251.211

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

[ความเห็นที่:  77] จากคุณ : ไก่ เมื่อ 15/9/2555 20:01:46  IP: 223.206.42.226

ดีมาก

[ความเห็นที่:  78] จากคุณ : อัย เมื่อ 16/9/2555 12:21:11  IP: 49.229.84.57

คือโปรเจทร้านขายยาค่ะ ต้องการเขียนโค้ดที่ปุ่มคำนวน

[ความเห็นที่:  79] จากคุณ : Lhin Za เมื่อ 19/10/2555 11:31:39  IP: 182.52.91.18

สวัสดีค่ะ คุณอาจารย์ทองก้อน
ขอแนะนำเรื่องอาการปวดขานะคะ คือ จากที่ คุณ nontapoom13 กล่าวมานั้นถูกมาเลยค่ะ จากที่ฟังดู อาจารย์จะเป็นแบบนั่งโต๊ะทำงานตลอดเวลา หรือเป็นส่วนมาก ทำให้เกิดอาการเส้นยึดตามภาษาชาวบ้าน หรือ เมื่อตอนเป็นเด็กอาจารย์อาจจะหกล้ม รถล้ม จักรยานล้ม เป็นเหตุทั้งนั้นค่ะ และมันสะสมมาตลอดโดยที่เราไม่รู้ตัว  มารู้ตัวอีกที เจ็บหนักแล้วค่ะ  ตอนนี้หลิน อายุ 27 ปี เมื่อก่อนออกกำลังกายทุกวัน (สมัยมัธยม) คิดว่าเป็นคนร่างกายแข็งแรง แต่จริงๆแล้วการออกกำลังกายก็เป็นอีกปัจจัยที่ทำให้เส้นมันเกิดอาการ บวม เหนื่อย เมื่อย ล้า และ มันก็แสดงอาการออกมา อาการหลินมันเริ่มตั้งแต่ตอนเรียนปี1 ค่ะ ขามันอยู่ดีดีก็ร้อนวาบขึ้นมา ตอนแรกนึกว่าโดนของ แล้วมันก็หายไป ไม่ได้ใส่ใจอะไร  พอหลายปีผ่านไป เราใส่ส้นสูงไปเรียนบ้าง  เดินเยอะบ้าง  บางทีนั่งเขียนโปรแกรมยันเช้าบ้าง(ต้องรีบปั่นการบ้านส่งอาจารย์ค่ะ) ไม่จวนตัวก็ไม่ทำกันเนาะ  นั่งเล่นเกมส์ยันสว่างบ้าง แหะๆ เด็กไอทีก็งี้อะคะ  ไม่ได้ออกกำลังกายบ้าง  จนทำให้ตอนนี้ ถ้ามันจะนึกเจ็บขึ้นมาทำเอาเดินไม่ได้เลยนะคะ  เหมือนเป็นคนพิการไปเลย  ยาแก้ปวดขนานไหนก็เอาไม่อยู่ค่ะ  ที่แม่ฮ่องสอนก็มีหมอนวดชำนาญการอยู่บ้างค่ะ  ยายแกบอกว่า เส้นหลินเนี่ยมันเข้าไปติดกระดูแล้ว  ให้มานวดบ่อยๆ แต่เราก็คนทำงานไม่ค่อยจะมีเวลา  ปวดทีก็ไปที  ยายแกก็จะบ่นเรามั้ง  แต่ที่จะแนะนำคือ  "ลองเล่นโยคะค่ะ"  ลองหาโหลดวีดิโอง่ายมาทำตาม  สมมติว่าเราปวดขา เราก็หาท่าที่เขากับขา  มันช่วยได้จริงๆค่ะ  ถึงตอนนี้หลินจะเพิ่งเล่นได้ไม่นานแต่รู้สึกว่าเวลาเราปวดขาอาการปวดมันจะมีไม่ค่อยเยอะเหมือนเมื่อก่อน ยังไงก็เอาใจช่วยนะคะอาจารย์ขอให้หายไวไวค่ะ

[ความเห็นที่:  80] จากคุณ : รพี เมื่อ 15/11/2555 17:19:59  IP: 203.154.68.4

แนะนำ POS2U สุดยอด โปรแกรมขายหน้าร้าน POS สำเร็จรูป ที่ถูกออกแบบมาให้ง่ายต่อการใช้งานและมาพร้อมกับ ความสะดวกสบาย ในการเข้าใช้งานโปรแกรมได้จากทุกที่ทุกเวลา 
และรองรับการทำงานทุกอุปกรณ์ที่สามารถ เชื่อมต่อ Internet ได้จากอปุกรณ์ต่างๆ เช่น โทรศัพท์มือถือ,แท็บเล็ต ,คอมพิวเตอร์ทั้วไป, หรือโน๊ตบุ๊ค สามารถ ใช้งานได้ 
โปรแกรมนี้เหมาะกับระบบงานที่มีสาขาหรือแฟรนไชส์ที่ต้องการดูข้อมูลได้ตลอดเวลา และยังมีบริการหลังการขายอีกด้วย 
ซึ่งทั้งหมดนี้คุณจะพบได้ที่นี่ที่เดียวที่ POS2U ใช้ง่าย สะดวกสบาย กับ POS2U
สนใจติดต่อได้ที่ 090-804-9803 , 089-458-5255 หรือเข้ามาดูรายละเอียดเพิ่มเติมได้ที่ http://pos2u.com

[ความเห็นที่:  81] จากคุณ : Pee เมื่อ 16/11/2555 16:14:33  IP: 182.52.139.36

น่าสนใจมากๆ

[ความเห็นที่:  82] จากคุณ : Pk เมื่อ 18/12/2555 23:55:09  IP: 113.53.42.34

ขอบคุณนะค่ะ สำหรับความรู้ดีๆ ที่แบ่งปันเด็กนักศึกษาค่ะ ช่วงนี้กำลังทำโปรเจ็คส่งค่ะ ไม่มีความชำนาญในการเขียนโปรแกรมเลยค่ะ เลือกเขียน vb6 ทำระบบร้านค่ะ เข้ามาอ่าน ในความรู้ส่วนนี้ ขอบคุณนะค่ะ

[ความเห็นที่:  83] จากคุณ : แมงปอ เมื่อ 17/1/2556 10:13:10  IP: 203.147.41.190

ขอบคุณคะ

[ความเห็นที่:  84] จากคุณ : เจษฎา เมื่อ 31/1/2556 22:35:27  IP: 110.168.19.47

ขอบคุณคะขอบคุณคะ

[ความเห็นที่:  85] จากคุณ : บาคาร่าออนไลน์ เมื่อ 25/3/2556 4:01:18  IP: 223.206.55.225

บาคาร่าออนไลน์ [url=http://www.gclub2011.com/]บาคาร่าออนไลน์[/url]

[ความเห็นที่:  86] จากคุณ : ทอม เมื่อ 6/5/2556 21:29:46  IP: 124.122.40.111

กำลังจะทำ project ส่งอาจารย์ครับ ระบบซื้อขายสินค้า ทำด้วย Visual C#+MS-SQL
แต่ยังเริ่มไม่ถูกเลยครับ เพิ่งเรียนไม่ถึงเดือนครับ ทำยังไงดีเริ่มตรงไหนก่อนครับ

[ความเห็นที่:  87] จากคุณ : นิว เมื่อ 30/5/2556 11:47:17  IP: 124.120.94.93

ดีมากเลยครับ

[ความเห็นที่:  88] จากคุณ : new เมื่อ 30/5/2556 11:48:03  IP: 124.120.94.93

ดีมากเลยครับ

[ความเห็นที่:  89] จากคุณ : สมเด็จน้อย เมื่อ 25/12/2557 1:46:24  IP: 118.173.253.46

อยากได้ครับ

[ความเห็นที่:  90] จากคุณ : 118.172.12.7 เมื่อ 28/4/2558 15:35:54  IP: 118.172.12.7

อยากได้ครับ

[ความเห็นที่:  91] จากคุณ : สมาน เมื่อ 18/5/2558 20:18:12  IP: 49.230.153.2

เป็นสิ่งที่ดีครับ

[ความเห็นที่:  92] จากคุณ : lertpong เมื่อ 26/5/2558 23:11:39  IP: 110.171.209.49

thank...............

[ความเห็นที่:  93] จากคุณ : preyada เมื่อ 26/1/2559 13:56:12  IP: 203.158.199.242

อยากไดจ้าา

[ความเห็นที่:  94] จากคุณ : abdullah เมื่อ 30/10/2559 22:13:54  IP: 110.77.222.92

อยากได้ครับ

[ความเห็นที่:  95] จากคุณ : qvab123@gmail.com เมื่อ 24/8/2560 16:32:11  IP: 223.204.242.146

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


ก่อนการคลิ๊กโพสต์ข้อความ ขอความกรุณาใช้ถ้อยคำที่สุภาพด้วยครับ เว็บไซต์แห่งนี้เป็นแหล่งเผยแพร่ความรู้ ดังนั้นสำหรับท่านที่พยายามจะป่วนเว็บไซต์ หากท่านเป็น "คนไทย" เช่นเดียวกันกับผม ก็ขอความกรุณาได้โปรดเห็นใจ "คนไทย" อีกจำนวนไม่น้อย ที่เข้ามาขอความช่วยเหลือ จากเว็บไซต์ของผมด้วยน่ะครับ และหากท่านใดไม่เข้าใจในตรงจุดไหน ก็ขอให้ระบุสิ่งที่อยากจะถามออกมา บทความของผมแทบทั้งหมดต้องอาศัยทักษะการปฏิบัติเป็นหลัก ดังนั้นขอให้ดู และ ทดสอบจากโค้ดโปรแกรมประกอบตามไปด้วย
IP Address: 54.158.21.176
ชื่อของคุณ:

ข้อคิดเห็น:

4 + 2 = ?  (กรุณาป้อนคำตอบลงในช่องด้านล่างให้เป็น ภาษาไทย ตามผลบวกของตัวเลขให้ถูกต้องก่อนด้วยน่ะครับ เช่น ศูนย์)
  


จี ทู จี เน็ต ดอต คอม - g2gNet Dot Com
เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์ 0407314800231
CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
Email: thongkorn@hotmail.com หรือ โทร. 08-6862-6560