2022年7月19日 星期二

Bind Listview from dataset

 Dim constr As String = "Put your connection string here"

        Dim ds As New DataSet

        Dim con As New SqlClient.SqlConnection(constr)

        con.Open()

        Dim sqladap As New SqlClient.SqlDataAdapter("select * from tbl_Employee", con)

        sqladap.Fill(ds)

 

        For i As Integer = 0 To ds.Tables(0).Columns.Count - 1

            ListView1.Columns.Add(ds.Tables(0).Columns(i).ToString())

        Next

        For i As Integer = 0 To ds.Tables(0).Rows.Count - 1

            Dim listRow As New ListViewItem

            listRow.Text = ds.Tables(0).Rows(i)(0).ToString()

            For j As Integer = 1 To ds.Tables(0).Columns.Count - 1

                listRow.SubItems.Add(ds.Tables(0).Rows(i)(j).ToString())

            Next

            ListView1.Items.Add(listRow)

        Next

VB.NET NPOI读取EXCEL数据到DataTable

引用來源


 Imports NPOI.HSSF.UserModel

Imports NPOI.SS.UserModel

Imports NPOI.XSSF.UserModel    

 

    ''' <summary>

    ''' 获取EXCEL表格真正的值

    ''' </summary>

    ''' <param name="cell"></param>

    ''' <returns>不同的类型处理后的值</returns>

    ''' <remarks></remarks>

    Private Shared Function GetCellValue(cell As ICell) As String

        If cell Is Nothing Then

            Return String.Empty

        End If

        Select Case cell.CellType

            Case CellType.Blank

                '空数据类型 这里类型注意一下,不同版本NPOI大小写可能不一样,有的版本是Blank(首字母大写)

                Return String.Empty

            Case CellType.[Boolean]

                'bool类型

                Return cell.BooleanCellValue.ToString()

            Case CellType.[Error]

                Return cell.ErrorCellValue.ToString()

            Case CellType.Numeric

                '数字类型

                If HSSFDateUtil.IsCellDateFormatted(cell) Then

                    '日期类型

                    Return cell.DateCellValue.ToString()

                Else

                    '其它数字

                    Return cell.NumericCellValue.ToString()

                End If

            Case CellType.Unknown

                '无法识别类型

                '默认类型

                Return cell.ToString()

                '

            Case CellType.[String]

                'string 类型

                Return cell.StringCellValue

            Case CellType.Formula

                '带公式类型

                Try

                    Dim e As New HSSFFormulaEvaluator(cell.Sheet.Workbook)

                    e.EvaluateInCell(cell)

                    Return cell.ToString()

                Catch

                    Return cell.NumericCellValue.ToString()

                End Try

        End Select

    End Function

 

 

 

    ''' <summary>

    ''' 获取excel内容

    ''' </summary>

    ''' <param name="filePath">excel文件路径</param>

    ''' <returns></returns>

    Public Shared Function ImportExcel(filePath As String) As DataTable

        Dim dt As New DataTable()

        Using fsRead As FileStream = System.IO.File.OpenRead(filePath)

            Dim wk As IWorkbook = Nothing

            '获取后缀名

            Dim extension As String = filePath.Substring(filePath.LastIndexOf(".")).ToString().ToLower()

            '判断是否是excel文件

            If extension = ".xlsx" OrElse extension = ".xls" Then

                '判断excel的版本

                If extension = ".xlsx" Then

                    wk = New XSSFWorkbook(fsRead)

                Else

                    wk = New HSSFWorkbook(fsRead)

                End If

 

                '获取第一个sheet

                Dim sheet As ISheet = wk.GetSheetAt(0)

                '获取第一行

                Dim headrow As IRow = sheet.GetRow(0)

                '创建列

                For i As Integer = headrow.FirstCellNum To headrow.Cells.Count - 1

                    Dim datacolum = New DataColumn(headrow.GetCell(i).StringCellValue)

                    'Dim datacolum As New DataColumn("F" + CStr(i + 1))

                    dt.Columns.Add(datacolum)

                Next

                '读取每行,从第二行起

                For r As Integer = 1 To sheet.LastRowNum

                    Dim result As Boolean = False

                    Dim dr As DataRow = dt.NewRow()

                    '获取当前行

                    Dim row As IRow = sheet.GetRow(r)

                    '读取每列

                    For j As Integer = 0 To row.Cells.Count - 1

                        Dim cell As ICell = row.GetCell(j)

                        '一个单元格

                        dr(j) = GetCellValue(cell)

                        '获取单元格的值

                        '全为空则不取

                        If dr(j).ToString() <> "" Then

                            result = True

                        End If

                    Next

                    If result = True Then

                        '把每行追加到DataTable

                        dt.Rows.Add(dr)

                    End If

                Next

            End If

        End Using

        Return dt

    End Function

 

    REM 调用

    Dim 文件名 = "abc.xlsx"

    Dim dt As New DataTable()

    If File.Exists(文件名) Then

        dt = ImportExcel(文件名)

        Grid显示框.DataSource = dt

    Else

        MsgBox(文件名 & "  不存在,请检查!!", MsgBoxStyle.Critical)

    End If

EPPlus —— 輕鬆處理 Excel

 https://igouist.github.io/post/2020/04/epplus/


2022年7月17日 星期日

指定的連接埠名稱不是以 COM/com 開頭

 Windows7 無法使用SerialPort控制項

---

可以試試看在裝置管理員中把你COM1停用,之後啟用,然後測試你的程式看看,滿久之前在某些電腦有遇過這種怪情形


-----------

SerialPort.GetPortNames 方法

指定的連接埠名稱不是以 COM/com 開頭

HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM


未指定從 GetPortNames 傳回的埠名稱順序。


GetPortNames使用 方法來查詢目前電腦是否有有效的序列埠名稱清單。 例如,您可以使用這個方法來判斷 COM1 和 COM2 是否為目前電腦的有效序列埠。


埠名稱是從系統登錄 (取得,例如HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM)。 如果登錄包含過時或不正確的資料,則 GetPortNames 方法會傳回不正確的資料。


MSSQL 資料表鎖住

 可以利用 dbcc opentran查看一下是否有交易還沒結束,若有可能也會導致lock


後續可再用 dbcc inputbuffer(id) 查看是何種語法導致


最後再用kill id 殺掉該程序


註:id即為 dbcc opentran回傳值


MS-SQL Disable AUTO SHRINK

 MS-SQL Disable AUTO SHRINK


--Set Auto Shrink ON or True

ALTER DATABASE TechYaz SET AUTO_SHRINK ON

--Set Auto Shrink OFF or False

ALTER DATABASE TechYaz SET AUTO_SHRINK OFF

2022年7月14日 星期四

KTV計費管理

 最近1-2個月一連3-4通電話,都是KTV打來須要計費管理軟體

無奈阿,我就沒寫~
有寫都是複合式的

非專用款的包廂+點餐+計時+計費

在幾年前曾寫了一個範本"多計時器"結果找不到放哪了

今天花了一些時間,重寫了一個多計時器引擎

有空來專寫一套"KTV包廂計時計費"管理軟體 

當然寫一定是寫網路版




2022年7月12日 星期二

MS-SQL 查詢執行過的語法

 MS-SQL 查詢執行過的語法


SELECT

QS.creation_time,

ST.text

FROM

sys.dm_exec_query_stats QS

CROSS APPLY

sys.dm_exec_sql_text(QS.sql_handle) ST

where QS.creation_time between '2017-11-17 10:23:01.500' and '2017-11-17 23:23:01.500'

ORDER BY

QS.creation_time DESC