Announcement

Collapse

ยินดีต้อนรับสู่ Excel Expert Training Forum

กฏกติกาของฟอรัม: แจ้งชื่อและนามสกุลจริงในการสมัครสมาชิก - ตั้งชื่อกระทู้ให้ตรงกับปัญหาที่ถาม - เขียนอธิบายคำถามทั้งในตัวกระทู้และในแฟ้มแนบ - ห้ามใช้คำว่า อ่ะ คับ คำผวน - ตั้งชื่อแฟ้มเป็นภาษาอังกฤษให้สื่อถึงปัญหา - อย่าระบุชื่อให้คนใดเป็นผู้ตอบ - งดให้ความร่วมมือหรือช่วยกระทู้ที่ละเมิดกฏของฟอรัม
See more
See less

จะอ่านหรือเขียนไฟล์เอ็กเซลในเซิฟเวอร์ โดยไม่ต้องแชร์โฟลเดอร์ได้หรือไม่

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • จะอ่านหรือเขียนไฟล์เอ็กเซลในเซิฟเวอร์ โดยไม่ต้องแชร์โฟลเดอร์ได้หรือไม่

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

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

  • #2
    ไม่แชร์แล้วเราเข้าไปใช้ได้ด้วยเหรอ? อันนี้ไม่รู้จริงๆครับ
    แต่การแชร์ข้อมูลทางผู้ดูแลระบบสามารถกำหนดผู้ใช้งานได้อยู่แล้วครับว่าให้ใครเข้าถึงได้บ้าง
    ลองปรึกษาผู้ดูแลระบบนะครับ

    Comment


    • #3
      พอดีว่ามีเรื่องให้ผมต้องได้คอนฟิกโปรแกรมๆหนึ่ง ซึ่งเซิฟเวอร์ที่ผมพัง เลยต้องย้ายฐานข้อมูลของโปรแกรมไปไว้เครื่องอื่น เจ้าหน้าที่ที่ซัพพอร์ทโปรแกรมให้ผมคอนฟิกบรรทัดที่ชี้ไปที่ฐานข้อมูลดังนี้
      ...
      [dbms_firebird]
      dbname=servicepc:G:\DBL\database2.fdb
      ...
      ผมจึงถามเขาว่า ไม่ต้องแชร์โฟลเดอร์ G:\DBL หรอกหรือ? เจ้าหน้าที่บอกว่าไม่ต้องแชร์ แค่ติดตั้งระบบฐานข้อมูล firebird แล้วระบบของ firebird จะสร้างช่องทาง(เปิดพอร์ท3050)ให้เอง สามารถอ่านเขียนได้ โดยไม่มีใครสามารถเข้าไปในโฟลเดอร์นี้ได้เลย

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

      *** ขออนุญาตกลับมาเพิ่มเติมครับ ***
      หลังจากได้ลองค้นหาคุณสมบัติต่างๆของระบบฐานข้อมูล firebird พบว่ามีแนวทางที่จะสร้างหน้างานด้วยเอ็กเซล แล้วใช้ vba โค้ดลงไปติดต่อกับ firebird ซึ่งมีตัวอย่างอยู่มากพอสมควร น่าจะนำมาประยุกต์ต่อได้ หากได้ผลหรือติดปัญหาอย่างไร จะกลับมาโพสต์อีกครั้งครับผม
      Last edited by mitrapap; 2 Jun 2018, 11:27.

      Comment


      • #4
        ผลการทดลองด้วยความเร่งด่วน สามารถทำงานได้จริงครับ หลักการคร่าวๆเป็นดังนี้
        1. ต้องวางแผนระบบข้อมูลใหม่ เพราะจะมองไม่เห็นทันทีเหมือนใช้เอ็กเซลเป็นฐานข้อมูล จะให้เป็นตัวเลข, วันเดือนปี หรือข้อความกี่ตัวอักษร ต้องระบุให้ชัดเจนครับ
        2. ติดตั้ง firebird ไว้ที่เซิฟเวอร์ สามารถเปลี่ยนยูสเซอร์และพาสเวิร์ดได้ เปลี่ยนเลขพอร์ทได้ตามต้องการ หากต้องการเชื่อมต่อจากภายนอกผ่านทางอินเตอร์เน็ต ต้องทำการฟอร์วอร์ดพอร์ทที่เร้าเตอร์ร่วมด้วย
        3. หลังจากติดตั้งเสร็จ สามารถอ่านคู่มือของโปรแกรมเองได้เลย รับรองว่าสร้างไฟล์ฐานข้อมูลเปล่าๆขึ้นมาได้จริงแน่นอน
        4. เมื่อได้ไฟล์ฐานข้อมูลเปล่าๆจากข้อ 3. แล้ว ก็มาติดตั้ง firebird ที่เครื่องที่ใช้ทำงาน (สำหรับผมคือโน้ตบุคประจำตัว)
        5. หลังจากนั้น การทำงานก็จะเหมือนๆเดิมที่ผมเคยเขียน VBA ในรูปแบบของ SQL ที่ใช้เอ็กเซลเป็นฐานข้อมูลนั่นเอง

        โดยลักษณะของประโยคเชื่อมต่อไปที่เอ็กเซลจะเป็นดังนี้
        cn.Open "Provider=Microsoft.ACE.OLEDB.12.0" & _
        " ;Extended Properties=Excel 12.0" & _
        " ;Data Source=" & dataPath & Workbook.Name

        เมื่อเปลี่ยนฐานข้อมูลมาเป็น firebird จะเป็นดังนี้
        strConn = "Driver={Firebird/InterBase(r) driver};" & _
        "UID=SYSDBA;" & _
        "PWD=xxxxxxxx;" & _
        "Dbname=" & FdbPath & fdbFile & ".fdb;"

        และเมื่อต้องการเชื่อมต่อผ่านเน็ต ก็ระบุเส้นทางประมาณนี้
        FdbPath = "www.xxxx.com/3051:C:\Users\bbbb\firebirdproject"

        นอกจากคู่มือของโปรแกรมเองแล้ว ข้อมูลในอินเตอร์เน็ตก็มีมากมายครับผม

        ตัวอย่างหน้าทำงานที่ให้ยูสเซอร์ทำงาน (ปิดบรรทัดที่ไม่เกี่ยวข้อง)
        Click image for larger version  Name:	image_414.jpg Views:	1 Size:	50.3 KB ID:	1260
        แต่ในขณะสร้างงานจะเป็นแบบนี้ (เปิดบรรทัดทั้งหมด)
        Click image for larger version  Name:	image_415.jpg Views:	1 Size:	101.3 KB ID:	1261

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

        ไม่ต้องมีการสั่งแชร์โฟลเดอร์ใดๆให้ยูสเซอร์เข้าไปยุ่งเกี่ยวได้แน่นอนครับ นอกจากนั้นก็จะได้ความเสถียรของระบบฐานข้อมูลที่เป็นมาตรฐานอีกด้วย ขอบคุณพื้นฐานจากผู้รู้ทุกๆท่านที่เว็บแห่งนี้ครับผม
        Last edited by mitrapap; 16 Jun 2018, 00:39.

        Comment


        • อรวีร์
          อรวีร์ commented
          Editing a comment
          ใช้วิธีเขียน VBA ฝังในแฟ้ม Excel หรือเปล่าคะ ถ้าใช่ เราก็ต้องใส่ UserName & Password ลงใน Code
          ซึ่งเสี่ยงที่ user มือบอนบางคนเจาะเข้าดู+แก้ไข Code ได้ ทำให้ทำอะไรก็ได้กับฐานข้อมูลเรา
          สำหรับอรวีร์ ถ้าเก็บข้อมูลที่ share กันโดยเก็บที่ server
          จะใช้วิธีเรียกผ่าน web service โดยเขียนโปรแกรมสำหรับทำหน้าที่เข้าถึงฐานข้อมูลไว้ที่ web server (ซึง user ไม่สามารถเห็น code ได้)
          ส่วน Excel ของเราจะเรียก-เข้าถึงข้อมูลผ่านเวปอีกที ซึ่งถึงแม้น user เข้าถึง-แกะ VBA เราได้ ก็ไม่สามารถเข้าถึงข้อมูลโดยตรง

        • อรวีร์
          อรวีร์ commented
          Editing a comment
          Firebird ก็เป็น DBMS ตัวหนึ่งที่ทำงานแบบ Sql Server ที่อรวีร์ใช้เก็บข้อมูล
          และอรวีร์ติดตั้ง Web Server เช่น IIS แล้วเขียนโปรแกรมภาษา ASP เก็บที่ Web Server นั้นทำหน้าที่เป็นบ๋อยให้ VBA ของ Excel เรียกใช้

      • #5
        ขอบคุณความรู้ที่นำมาแบ่งปันกันครับ

        Comment


        • #6
          ผมเองอ่านโพสต์ถามตอบในบอร์ดนี้เป็นประจำ ยอมรับว่าได้นำความรู้ต่างๆไปปฏิบัติได้จริงๆ พบเจออะไรใหม่ๆก็กลับเอาไปปรับปรุงโค้ดและงานของตัวเองอยู่เนืองๆครับ ต้องขอขอบคุณทุกๆท่าน ไว้ ณ ที่นี้ด้วยครับ(รวมทั้งคุณอรวีร์ด้วยนะครับ)
          ด้วยว่าผมมิได้ร่ำเรียนมาทางด้านโปรแกรมเมอร์ แต่ไปเห็นรุ่นพี่ท่านหนึ่ง ใช้มาโครในเอ็กเซล97 สั่งคัดลอกไฟล์ MIDI ลงแผ่นฟล้อปปี้ดิสก์3.5นิ้ว พร้อมพิมพ์ลาเบลให้เสร็จสรรพ(ขายให้นักร้องสวนอาหาร...ใครทันบ้างยกมือขึ้น?) ผมเลยลองศึกษาดูบ้าง แล้วก็ติดลมมาจนถึงทุกวันนี้ เคยคิดจะไปถึง web service เหมือนกัน แต่คงเกษียณเสียก่อน งานใหญ่ๆก็ out source เอาครับ ผมจะจับเฉพาะงานด่วน หรืองานเฉพาะหน้าครับ

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

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

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

          Comment

          Working...
          X