:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

สอบถามการแปลงข้อมูลจากจาก column และ row เป็น SQL insert command

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
tnos11
Member
Member
Posts: 7
Joined: Mon Jul 20, 2020 5:53 pm

สอบถามการแปลงข้อมูลจากจาก column และ row เป็น SQL insert command

#1

Post by tnos11 »

สอบถามแปลงข้อมูลจากจาก column และ row เป็น SQL insert command

ไม่แน่ใจว่าสามารถทำได้รึไม่ครับ และสามารถกด export มาเป็นไฟล์ .sql ได้จาก excel ไม่แน่ใจว่าสามารถทำได้รึเปล่าครับ
tnos11
Member
Member
Posts: 7
Joined: Mon Jul 20, 2020 5:53 pm

Re: สอบถามการแปลงข้อมูลจากจาก column และ row เป็น SQL insert command

#2

Post by tnos11 »

จากคำถามแรกตอนนี้ได้วิธีแล้วครับ ตัวอย่างจาก https://stackoverflow.com/questions/157 ... 0#37409790

และต่อเนื่องจากคำถามแรกถ้า จะทำปุ่ม Convert เฉพาะ Column SQL ขึ้นมาเพื่อทำการแปลง Data จาก Column นี้ Save ไปเป็น .sql สามารถทำได้ไหมครับ

Image
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการแปลงข้อมูลจากจาก column และ row เป็น SQL insert command

#3

Post by snasui »

:D ไฟล์ที่มีนามสกุลเป็น .sql เข้าใจว่าสามารถสร้างขึ้นมาได้ด้วย VBA เหมือนกันการสร้าง Text File ทั่ว ๆ ไปเพียงแต่กำหนดให้มีนามสกุลเป็น .sql ครับ

ส่วนจะสร้างอย่างไรนั้นจำเป็นจะต้องเขียน Code มาเอง ติดแล้วค่อยถามกันต่อครับ

เมื่อสามารถบันทึกข้อมูลจาก VBA ได้โดยตรง ปกติจะไม่สร้างไฟล์ .sql ขึ้นมาใช้ แต่จะเขียน Code ให้ทำงานบน SQL เลยครับ
tnos11
Member
Member
Posts: 7
Joined: Mon Jul 20, 2020 5:53 pm

Re: สอบถามการแปลงข้อมูลจากจาก column และ row เป็น SQL insert command

#4

Post by tnos11 »

รบกวนผู้รู้ครับ จากโค้ดด้านล่างมีคำถามคือว่า

1.เราสามารถปรับเปลี่ยน Format ของวันที่ตาม Format ที่ต้องการได้ไหมครับ จากที่ได้ export ออกมาเป็น .sql จะได้เป็น

INSERT INTO checktime ('PIN','CHECKTIME') VALUES
('PIN','CHECKTIME'),
17,5/14/2020 3:32:05 PM),
16,5/14/2020 3:32:00 PM),
5,5/14/2020 3:30:51 PM)

แต่ format ที่ต้องการจะเป็น dd/mm/yyyy h:mm ครับ

2.สามารถกำหนดชื่อไฟล์ที่จะ export ออกมาจาก "myfilepath = "C:\mysql.sql" ให้ run ตามวันที่ของ Data ใน Column "CHECKTIME" ได้ไหมครับและปรับ Format เป็น yyyymmdd.sql

Image

Code: Select all

Private Sub CommandButton3_Click()
    'creates the file
    Dim myfilepath As String
    myfilepath = "C:\mysql.sql"
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim myFile As Object
    Set myFile = fso.createtextfile(myfilepath)
    
    'writes stuff to the file
    With myFile
        Dim sqlstr As String
        sqlstr = "INSERT INTO checktime ("
        Dim colcount As Integer
        colcount = 1
        With ThisWorkbook.Sheets("Summary")
            Do Until .Cells(1, colcount).Value = ""
                sqlstr = sqlstr & "'" & .Cells(1, colcount).Value & "',"
                colcount = colcount + 1
            Loop
            sqlstr = Left(sqlstr, Len(sqlstr) - 1) & ") VALUES " & Chr(13) & "("
            Dim rCount As Integer
            rCount = 1
            Do Until .Cells(rCount, 1).Value = ""
                colcount = 1
                Do Until .Cells(1, colcount).Value = ""
                    If IsNumeric(.Cells(rCount, colcount).Value) Then
                        sqlstr = sqlstr & "" & .Cells(rCount, colcount).Value & _
                                    ","
                    ElseIf IsDate(.Cells(rCount, colcount).Value) Then
                        sqlstr = sqlstr & "" & .Cells(rCount, colcount).Value & _
                                    ","
                    Else
                        sqlstr = sqlstr & "'" & .Cells(rCount, colcount).Value & _
                                    "',"
                    End If
                    colcount = colcount + 1
                Loop
                sqlstr = Left(sqlstr, Len(sqlstr) - 1) & ")," & Chr(13)
                rCount = rCount + 1
            Loop
            sqlstr = Left(sqlstr, Len(sqlstr) - 2)
            
        End With
        .writeline sqlstr
    End With
    'closes the file
    myFile.Close
    Set myFile = Nothing
End Sub
ขอบคุณล่วงหน้าครับ :D :D
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการแปลงข้อมูลจากจาก column และ row เป็น SQL insert command

#5

Post by snasui »

:D กรุณาแนบไฟล์ตัวอย่างมาด้วยและควรเป็นเช่นนี้เสมอ จะได้สะดวกในการตอบของเพื่อนสมาชิกครับ

ยังไม่ค่อยกระจ่างในเรื่องของการให้รันตามวันที่ กรุณาอธิบายเพิ่มเติม ถ้าต้องการกำหนดวันเวลารันจะต้องทำงาน Task Shedule ของ Windows แม้จะกำหนดให้รันตามค่าใน Data ก็ต้องมีตัวกำหนดให้โปรแกรมทำงานเพื่อจะเช็คว่าข้อมูลไหนพร้อมที่จะรัน เช่นนี้เป็นต้นครับ
tnos11
Member
Member
Posts: 7
Joined: Mon Jul 20, 2020 5:53 pm

Re: สอบถามการแปลงข้อมูลจากจาก column และ row เป็น SQL insert command

#6

Post by tnos11 »

snasui wrote: Wed Jul 22, 2020 8:33 pm :D กรุณาแนบไฟล์ตัวอย่างมาด้วยและควรเป็นเช่นนี้เสมอ จะได้สะดวกในการตอบของเพื่อนสมาชิกครับ

ยังไม่ค่อยกระจ่างในเรื่องของการให้รันตามวันที่ กรุณาอธิบายเพิ่มเติม ถ้าต้องการกำหนดวันเวลารันจะต้องทำงาน Task Shedule ของ Windows แม้จะกำหนดให้รันตามค่าใน Data ก็ต้องมีตัวกำหนดให้โปรแกรมทำงานเพื่อจะเช็คว่าข้อมูลไหนพร้อมที่จะรัน เช่นนี้เป็นต้นครับ
ขอโทษด้วยครับ แนบไฟล์ให้แล้วนะครับ

2.สามารถกำหนดชื่อไฟล์ที่จะ export ออกมาจาก "myfilepath = "C:\mysql.sql" ให้ run ตามวันที่ของ Data ใน Column "CHECKTIME" ได้ไหมครับและปรับ Format เป็น yyyymmdd.sql

จากคำถามด้านบนผมอาจจะอธิบายไม่เคลียร์ คือผมต้องการให้ ไฟล์ที่ export ออกมาเป็น sql นั้นจากโค้ดด้านบน กำหนดชื่อ ไฟล์ไว้อยู่แล้วเป็น mysql.sql แต่ผมสงสัยว่าเราสามารถกำหนดให้ชื่อไฟล์ นั้น set ตาม data ที่ใน column B ที่เป็นวันที่ได้ไหมครับ ผมไม่แน่ใจต้องเขียน code ยังไงให้ ไปดึงค่า วันที่จาก column B มาและมาใส่ เป็นชื่อไฟล์ ตาม format "yyyymmdd.sql" นี้ได้ครับ

ซึ้งโค้ดจะฝั่งอยู่ในปุ่ม Create SQL File และ Column B ตามที่วงไว้ให้ ซึ่งต้องการดึงค่าวันที่สัก 1 row เพื่อไปกำหนดเป็น ชื่อไฟล์ครับ

ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการแปลงข้อมูลจากจาก column และ row เป็น SQL insert command

#7

Post by snasui »

tnos11 wrote: Wed Jul 22, 2020 4:00 pm 1.เราสามารถปรับเปลี่ยน Format ของวันที่ตาม Format ที่ต้องการได้ไหมครับ จากที่ได้ export ออกมาเป็น .sql จะได้เป็น

INSERT INTO checktime ('PIN','CHECKTIME') VALUES
('PIN','CHECKTIME'),
17,5/14/2020 3:32:05 PM),
16,5/14/2020 3:32:00 PM),
5,5/14/2020 3:30:51 PM)
:D กำหนด Format ให้กับวันที่ได้ด้วยฟังก์ชั่น Application.Text ตามด้านล่างครับ

Code: Select all

'Other code
Do Until .Cells(1, colcount).Value = ""
    If IsNumeric(.Cells(rCount, colcount).Value) Then
        sqlstr = sqlstr & "" & .Cells(rCount, colcount).Value & _
                    ","
    ElseIf IsDate(.Cells(rCount, colcount).Value) Then
        sqlstr = sqlstr & "" & Application.Text( _
            .Cells(rCount, colcount).Value, "dd/mm/yyyy hh:mm") & _
            ","
    Else
        sqlstr = sqlstr & "'" & .Cells(rCount, colcount).Value & _
                    "',"
    End If
    colcount = colcount + 1
Loop
'Other code
tnos11 wrote: Thu Jul 23, 2020 2:57 pm 2.สามารถกำหนดชื่อไฟล์ที่จะ export ออกมาจาก "myfilepath = "C:\mysql.sql" ให้ run ตามวันที่ของ Data ใน Column "CHECKTIME" ได้ไหมครับและปรับ Format เป็น yyyymmdd.sql
การเปลี่ยนชื่อทำได้ 2 แบบ คือเปลี่ยนในขั้นตอนกำหนดตัวแปร และเปลี่ยนทีหลัง

กรณีเปลี่ยนในขั้นตอนการกำหนดตัวแปรให้เป็นชื่อไฟล์ สามารถใช้ Statement ตามด้านล่างครับ

Code: Select all

Private Sub CommandButton3_Click()
    'creates the file
    Dim myfilepath As String
    myfilepath = "C:\mysql" & _
        Application.Text(Worksheets("Summary").Range("b2").Value, "yyyymmdd") & ".sql"
    'Other code
Post Reply