ให้กดปุ่ม ปริ้น แล้วออกมาเป็น ไฟล์ pdf แต่ว่าภาษาไทยหายไปดังรูปครับ
เลยอยากทราบวิธีแก้ครับ
หรือถ้าไม่ได้จริงๆ ให้ออกมาเป็น excel ก็ได้ครับ
นี่ code ครับ
Code (VB.NET)
Imports System.Data.SqlClient
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports System.IO
Imports System.Text
Imports iTextSharp.text.html
Imports iTextSharp.text.html.simpleparser
Public Class frm_print_last
Friend cn As New SqlConnection("Data source=.\SQLExpress; Initial Catalog=Inventory_Project;Integrated Security=sspi;")
Friend cmd As New SqlCommand
Friend DA As New SqlDataAdapter
Friend DS As New DataSet
Friend sql As String
Public Sub open_database()
If cn.State = ConnectionState.Closed Then cn.Open()
End Sub
Friend Sub load_print()
open_database()
sql = "select * from Finishgood where สถานะการสั่ง='สั่ง'"
DA = New SqlDataAdapter(sql, cn)
DS = New DataSet
DA.Fill(DS, "table")
datagrid_print.DataSource = DS.Tables("table")
End Sub
Private Sub frm_print_last_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
load_print()
Timer1.Start()
End Sub
Friend Sub add_date()
Dim i As Integer = datagrid_print.CurrentRow.Index
Dim d1 As Date = Now.ToShortDateString
Dim fg_datesum As Date = datagrid_print.Item(15, i).Value
'if fg_datesum = d1 and สถานะการสั่ง = 'สั่ง' then
'elseif fg_datesum <> d1 and สถานะการสั่ง = 'สั่ง' then
sql = "UPDATE Finishgood set fg_datesum = CASE WHEN (fg_datesum = '" & d1 & "' and สถานะการสั่ง = 'สั่ง') THEN (DATEADD(dd,เวลาระหว่างการสั่ง,fg_datesum)) WHEN (fg_datesum <> '" & d1 & "' and สถานะการสั่ง = 'สั่ง') THEN (DATEADD(dd,0,fg_datesum)) END"
cmd = New SqlCommand(sql, cn)
cmd.ExecuteNonQuery()
End Sub
Friend Sub return_status()
'if สถานะการสั่ง = 'สั่ง' and นโยบายการสั่งสินค้า = 'T,Q' then
'elseif สถานะการสั่ง = 'สั่ง' and นโยบายการสั่งสินค้า = 'T,M' then
'elseif สถานะการสั่ง = 'รอการสั่ง' and นโยบายการสั่งสินค้า = 'T,Q' then
'elseif สถานะการสั่ง = 'รอการสั่ง' and นโยบายการสั่งสินค้า = 'T,M' then
'elseif สถานะการสั่ง = 'สั่ง' and นโยบายการสั่งสินค้า = 'S,Q' then
'elseif สถานะการสั่ง = 'สั่ง' and นโยบายการสั่งสินค้า = 'S,M' then
'elseif สถานะการสั่ง = 'รอการสั่ง' and นโยบายการสั่งสินค้า = 'S,Q' then
'elseif สถานะการสั่ง = 'รอการสั่ง' and นโยบายการสั่งสินค้า = 'S,M' then
'end if
open_database()
sql = "update Finishgood set สถานะการสั่ง= CASE WHEN ((สถานะการสั่ง= 'สั่ง') AND (นโยบายการสั่งสินค้า = 'T,Q')) THEN 'รอการสั่ง' WHEN ((สถานะการสั่ง= 'สั่ง') AND (นโยบายการสั่งสินค้า = 'T,M')) THEN 'รอการสั่ง' WHEN ((สถานะการสั่ง= 'รอการสั่ง') AND (นโยบายการสั่งสินค้า = 'T,Q')) THEN 'รอการสั่ง' WHEN ((สถานะการสั่ง= 'รอการสั่ง') AND (นโยบายการสั่งสินค้า = 'T,M')) THEN 'รอการสั่ง' WHEN ((สถานะการสั่ง= 'สั่ง') AND (นโยบายการสั่งสินค้า = 'S,Q')) THEN 'รอรับสินค้า' WHEN ((สถานะการสั่ง= 'สั่ง') AND (นโยบายการสั่งสินค้า = 'S,M')) THEN 'รอรับสินค้า' WHEN ((สถานะการสั่ง= 'รอการสั่ง') AND (นโยบายการสั่งสินค้า = 'S,Q')) THEN 'รอการสั่ง' WHEN ((สถานะการสั่ง= 'รอการสั่ง') AND (นโยบายการสั่งสินค้า = 'S,M')) THEN 'รอการสั่ง' END"
cmd = New SqlCommand(sql, cn)
cmd.ExecuteNonQuery()
End Sub
Friend Sub save_pdf()
'Creating iTextSharp Table from the DataTable data
Dim pdfTable As New PdfPTable(datagrid_print.ColumnCount)
pdfTable.DefaultCell.Padding = 3
pdfTable.WidthPercentage = 30
pdfTable.HorizontalAlignment = Element.ALIGN_LEFT
pdfTable.DefaultCell.BorderWidth = 1
'Adding Header row
For Each column As DataGridViewColumn In datagrid_print.Columns
Dim cell As New PdfPCell(New Phrase(column.HeaderText))
cell.BackgroundColor = New iTextSharp.text.Color(240, 240, 240)
pdfTable.AddCell(cell)
Next
'Adding DataRow
For Each row As DataGridViewRow In datagrid_print.Rows
For Each cell As DataGridViewCell In row.Cells
pdfTable.AddCell(cell.Value.ToString())
Next
Next
'Exporting to PDF
Dim folderPath As String = "C:\PDFs\"
If Not Directory.Exists(folderPath) Then
Directory.CreateDirectory(folderPath)
End If
Using stream As New FileStream(folderPath & "DataGridViewExport.pdf", FileMode.Create)
Dim pdfDoc As New Document(PageSize.A2, 10.0F, 10.0F, 10.0F, 0.0F)
PdfWriter.GetInstance(pdfDoc, stream)
pdfDoc.Open()
pdfDoc.Add(pdfTable)
pdfDoc.Close()
stream.Close()
End Using
End Sub
Friend Sub open_file()
Dim Path As String = Application.ExecutablePath
Path = "C:\PDFs\DataGridViewExport.pdf"
Dim myProcess As System.Diagnostics.Process = New Process
myProcess.StartInfo.FileName = Path
myProcess.Start()
End Sub
Private Sub btn_print_Click(sender As System.Object, e As System.EventArgs) Handles btn_print.Click
return_status()
add_date()
save_pdf()
open_file()
End Sub
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
Label2.Text = Now.ToShortDateString
End Sub
End Class
Tag : .NET, Ms SQL Server 2008, VB.NET, VS 2010 (.NET 4.x), Windows