您的位置:首页 > 数据库 > Oracle

DATAGRIDVIEW自己写的分页,不使用RECORDSET方法

2006-12-20 11:00 357 查看
按钮点击响应的代码:




   Private Sub btnleft_Click()Sub btnleft_Click(ByVal ARG1 As System.Object, ByVal ARG2 As System.EventArgs) Handles btnleft.Click


        Try




            'public_COMFNC.LogErr("MSG801", 0, "頁移動処理(左)")




            lockcontrol()




            componentreadinpublicvariable()




            public_dsListData.Clear()




            If public_CN_ORA_CONN.CN_Cmd_Data(public_dsListData, _


                                                           public_lNowPageNumber - 1, _


                                                           public_sRadioChoosed, _


                                                           public_sListBoxChoosed, _


                                                           public_lCount, _


                                                           public_lPageNumber, _


                                                           public_lNowPageNumber, _


                                                           public_lPageCount) = False Then




                public_COMFNC.LogErr("MSG801", 1, "頁移動処理(左)")




            End If




            'If public_lCount = 0 Then


            '    MsgBox("no data")


            'End If




            labelupdate()




            unlockcontrol()




            public_COMFNC.LogErr("MSG801", 0, "頁移動処理(左)")




        Catch ex As Exception


            public_COMFNC.LogErr("MSG801", 1, "頁移動処理(左)")


        End Try


    End Sub






    Private Sub btnlefttop_Click()Sub btnlefttop_Click(ByVal ARG1 As System.Object, ByVal ARG2 As System.EventArgs) Handles btnlefttop.Click


        Try




            public_COMFNC.LogErr("MSG801", 0, "頁移動処理(左)")




            lockcontrol()




            componentreadinpublicvariable()




            public_dsListData.Clear()




            If public_CN_ORA_CONN.CN_Cmd_Data(public_dsListData, _


                                                           1, _


                                                           public_sRadioChoosed, _


                                                           public_sListBoxChoosed, _


                                                           public_lCount, _


                                                           public_lPageNumber, _


                                                           public_lNowPageNumber, _


                                                           public_lPageCount) = False Then


                public_COMFNC.LogErr("MSG801", 1, "頁移動処理(左)")




            End If




            'If public_lCount = 0 Then


            '    MsgBox("no data")


            'End If




            labelupdate()




            unlockcontrol()




            public_COMFNC.LogErr("MSG801", 0, "頁移動処理(左)")




        Catch ex As Exception


            public_COMFNC.LogErr("MSG801", 1, "頁移動処理(左)")


        End Try


    End Sub


    ' 次のページと最後のページボタンを表示する




    Private Sub btnright_Click()Sub btnright_Click(ByVal ARG1 As System.Object, ByVal ARG2 As System.EventArgs) Handles btnright.Click


        Try


            lockcontrol()




            componentreadinpublicvariable()




            public_dsListData.Clear()




            If public_CN_ORA_CONN.CN_Cmd_Data(public_dsListData, _


                                                           public_lNowPageNumber + 1, _


                                                           public_sRadioChoosed, _


                                                           public_sListBoxChoosed, _


                                                           public_lCount, _


                                                           public_lPageNumber, _
                                                           public_lNowPageNumber, _


                                                           public_lPageCount) = False Then




                MsgBox("error")


            End If




            If public_lCount = 0 Then


                MsgBox("no data")


            End If




            labelupdate()




            unlockcontrol()




        Catch ex As Exception




        End Try


    End Sub






    Private Sub btnrightbottom_Click()Sub btnrightbottom_Click(ByVal ARG1 As System.Object, ByVal ARG2 As System.EventArgs) Handles btnrightbottom.Click


        Try


            lockcontrol()




            componentreadinpublicvariable()




            public_dsListData.Clear()




            If public_CN_ORA_CONN.CN_Cmd_Data(public_dsListData, _


                                                           public_lPageNumber, _


                                                           public_sRadioChoosed, _


                                                           public_sListBoxChoosed, _


                                                           public_lCount, _


                                                           public_lPageNumber, _


                                                           public_lNowPageNumber, _


                                                           public_lPageCount) = False Then


                MsgBox("error")


            End If




            If public_lCount = 0 Then


                MsgBox("no data")


            End If




            labelupdate()




            unlockcontrol()


        Catch ex As Exception


        End Try


    End Sub

 共同内数据调用的方法和接口

 




    Public Function CN_Cmd_Data()Function CN_Cmd_Data(ByRef p_ds_Top20 As DataSet, _


                                ByVal p_iPageNo As Long, _


                                ByVal p_sRadioButton As String, _


                                ByVal p_sListbox As String, _


                                ByRef p_lCount As Long, _


                                ByRef p_lPageNumber As Long, _


                                ByRef p_lNowPageNumber As Long, _


                                ByRef p_lPageCount As Long) As Boolean


        Try




            public_COMFNC.LogErr("MSG110", LogType.OperatingLog, "現在値データグリッド取得処理開始")




            Dim sSQL_Txt_All As String = ""


            Dim sSQL_Txt_20 As String = ""


            Dim sSql_Conn As String = ""


            Dim sTagkd As String = ""


            Dim sFlag As String = ""


            Dim sKJOCD As String = ""


            Dim lListCount, lPageno As Long


            Dim ds_All As New DataSet


            Dim RI_NEW As New ReadIni




            '◆DB接続初期化処理 START◆


            If RI_NEW.CM_InitCon(sSql_Conn) = False Then


                Return False


            End If


            '◆Oracleコネクション◆


            SysOraCon = New System.Data.OracleClient.OracleConnection(sSql_Conn)


            SysOraCon.Open()


            SysOraTran = SysOraCon.BeginTransaction()


            SysOraCommand = SysOraCon.CreateCommand


            SysOraCommand.Transaction = SysOraTran


            '◆DB接続初期化処理 END◆




            '◆SELECT文作成 START◆


            '◆0:アナログ、1:デジタルTAGKD◆




            If p_sListbox = "0" Then


                sKJOCD = " "


            Else


                sKJOCD = "       WSIG.KJOCD = '" & p_sListbox & "' and "


            End If




            If p_sRadioButton = "デジタル" Then


                sSQL_Txt_All = "select " & _


                               "count( TAGID) " & _


                               "from (select " & _


                               "       WSIG.TAGID," & _


                               "       rownum num1 " & _


                               "       from WSIG, WGDI " & _


                               " WHERE " & _


                               sKJOCD & _


                               "       WGDI.TAGID(+) = WSIG.TAGID) t "


            ElseIf p_sRadioButton = "アナログ" Then


                sSQL_Txt_All = "select " & _


                               "count( TAGID) " & _


                               "from (select " & _


                               "       WSIG.TAGID," & _


                               "       rownum num1 " & _


                               "       from WSIG, WGAI " & _


                               " WHERE " & _


                               sKJOCD & _


                               "       WGAI.TAGID(+) = WSIG.TAGID) t "


            End If




            SysOraCommand.CommandText = sSQL_Txt_All


            '◆アダプター作成◆


            SysOraAdapter = New System.Data.OracleClient.OracleDataAdapter


            SysOraAdapter.SelectCommand = SysOraCommand




            '◆SQL実行◆


            ds_All.Reset()


            SysOraAdapter.Fill(ds_All)


            lListCount = CLng(ds_All.Tables(0).Rows(0).Item(0).ToString)


            p_lCount = lListCount


            '◆データ総数の取得 END◆




            '◆毎頁に表示するデータの数◆


            p_lPageCount = RI_NEW.GetPageCount


            Dim iMod As Int16


            iMod = lListCount Mod p_lPageCount


            '◆ページ総数 START◆


            If p_lCount > 0 Then


                If iMod = 0 Then


                    lPageno = lListCount / p_lPageCount


                Else


                    lPageno = Int(lListCount / p_lPageCount) + 1


                End If


            Else


                lPageno = 0


            End If


            p_lPageNumber = lPageno


            '◆ページ総数 END◆




            If p_iPageNo < 0 Then


                Return False


            End If




            '◆◆


            If p_iPageNo >= lPageno Then


                sFlag = "rightbottom"


                p_lNowPageNumber = lPageno


            ElseIf p_iPageNo <= 1 Then


                sFlag = "lefttop"


                p_lNowPageNumber = 1


            Else


                sFlag = "left"


                p_lNowPageNumber = p_iPageNo


            End If


            If p_sRadioButton = "デジタル" Then


                sSQL_Txt_20 = "SELECT                               " & _


                              "T.TAGID AS 信号コード,              " & _


                              "T.KEINM AS 系列名称,                  " & _


                              "T.KJONM AS 機場名称,                  " & _


                              "T.STBNM AS 設備名称,                  " & _


                              "T.DATNM AS 信号名称,                  " & _


                              "T.PANDUAN AS 現在値,                  " & _


                              "T.PANDUAN2 AS 動作単位              " & _


                              "FROM (SELECT                       " & _


                              "   WSIG.TAGID,                     " & _


                              "   WSIG.KEINM,                     " & _


                              "   WSIG.KJONM,                     " & _


                              "   WSIG.STBNM,                     " & _


                              "   WSIG.DATNM,                     " & _


                              "   WSIG.TANNM,                     " & _


                              "   ROWNUM NUM1,                    " & _


                              "   CASE                            " & _


                              "   WHEN WSIG.CHKBT = 0             " & _


                              "   THEN                            " & _


                              "         CASE                      " & _


                              "         WHEN WGDI.DIDAT = '0'     " & _


                              "         THEN 'OFF'                " & _


                              "         ELSE                      " & _


                              "         'ON'                      " & _


                              "         END                       " & _


                              "   WHEN WSIG.CHKBT = 1             " & _


                              "   THEN                            " & _


                              "         CASE                      " & _


                              "         WHEN WGDI.DIDAT = '1'     " & _


                              "         THEN 'OFF'                " & _


                              "         ELSE                      " & _


                              "         'ON'                      " & _


                              "         END                       " & _


                              "   ELSE                            " & _


                              "   ''                              " & _


                              "   END                             " & _


                              "   AS PANDUAN,                     " & _


                              "      CASE                               " & _


                              "      WHEN WSIG.CHKBT = 0             " & _


                              "      THEN                            " & _


                              "            CASE                      " & _


                              "            WHEN WGDI.DIDAT = '0'     " & _


                              "            THEN                      " & _


                              "                CASE                  " & _


                              "                WHEN WSIG.FKYNM ='1'  " & _


                              "                THEN                  " & _


                              "                    WSIG.HATNM        " & _


                              "                ELSE                  " & _


                              "                    ''                " & _


                              "                END                   " & _


                              "          ELSE                        " & _


                              "            ''                        " & _


                              "          END                         " & _


                              "      WHEN WSIG.CHKBT = 1             " & _


                              "      THEN                            " & _


                              "            CASE                      " & _


                              "            WHEN WGDI.DIDAT = '0'     " & _


                              "            THEN                      " & _


                              "                CASE                  " & _


                              "                WHEN WSIG.HATNM ='1'  " & _


                              "                THEN                  " & _


                              "                    WSIG.FKYNM        " & _


                              "                ELSE                  " & _


                              "                    ''                " & _


                              "                END                   " & _


                              "          ELSE                        " & _


                              "            ''                        " & _


                              "          END                         " & _


                              "      ELSE                            " & _


                              "          ''                          " & _


                              "      END                             " & _


                              "      AS PANDUAN2                     " & _


                              "   FROM WSIG,WGDI                  " & _


                              "   WHERE                           " & _


                              sKJOCD & _


                              "   WGDI.TAGID(+) = WSIG.TAGID) t   "


            ElseIf p_sRadioButton = "アナログ" Then


                sSQL_Txt_20 = "SELECT                               " & _


                              "T.TAGID AS 信号コード,              " & _


                              "T.KEINM AS 系列名称,                  " & _


                              "T.KJONM AS 機場名称,                  " & _


                              "T.STBNM AS 設備名称,                  " & _


                              "T.DATNM AS 信号名称,                  " & _


                              "T.PANDUAN AS 現在値,                  " & _


                              "T.TANNM AS 動作単位                  " & _


                              "FROM (SELECT                       " & _


                              "   WSIG.TAGID,                     " & _


                              "   WSIG.KEINM,                     " & _


                              "   WSIG.KJONM,                     " & _


                              "   WSIG.STBNM,                     " & _


                              "   WSIG.DATNM,                     " & _


                              "   WSIG.TANNM,                     " & _


                              "   (WGAI.AIDAT / power(10,WSIG.TENPS)) " & _


                              "   PANDUAN,                        " & _


                              "   ROWNUM NUM1                     " & _


                              "   FROM WSIG,WGAI                  " & _


                              "   WHERE                           " & _


                              sKJOCD & _


                              "   WGAI.TAGID(+) = WSIG.TAGID) t   "


            End If


            If sFlag = "first" Or sFlag = "lefttop" Then 'go to the top page 


                sSQL_Txt_20 = sSQL_Txt_20 & " where num1 <= " & RI_NEW.GetPageCount.ToString


            ElseIf sFlag = "left" Or sFlag = "right" Then 'go to the last page 


                Dim lLeftCount, lRightCount As Long


                lLeftCount = (p_iPageNo - 1) * RI_NEW.GetPageCount + 1


                lRightCount = p_iPageNo * RI_NEW.GetPageCount


                sSQL_Txt_20 = sSQL_Txt_20 & " where num1 >= " & lLeftCount.ToString & " and num1 <= " & lRightCount.ToString


            ElseIf sFlag = "rightbottom" Then 'go to the bottom page 


                Dim lLastCount As Long = 0


                lLastCount = lListCount Mod RI_NEW.GetPageCount


                If lLastCount = 0 Then


                    sSQL_Txt_20 = sSQL_Txt_20 & " where num1 > " & (lListCount - RI_NEW.GetPageCount).ToString


                Else


                    sSQL_Txt_20 = sSQL_Txt_20 & " where num1 > " & (lListCount - lLastCount).ToString


                End If




            End If




            '◆SELECT文作成 END◆




            SysOraCommand.CommandText = sSQL_Txt_20


            '◆アダプター作成◆


            SysOraAdapter = New System.Data.OracleClient.OracleDataAdapter


            SysOraAdapter.SelectCommand = SysOraCommand




            '◆SQL実行◆


            p_ds_Top20.Reset()


            SysOraAdapter.Fill(p_ds_Top20)




            public_COMFNC.LogErr("MSG111", LogType.OperatingLog, "現在値データグリッド取得処理終了")




            Return True




        Catch ex As Exception




            public_COMFNC.LogErr("MSG112", LogType.SystemError, "現在値データグリッド取得処理システムエラー")


            Return False


        Finally


            '◆Oracleデータベースクローズ処理◆


            '12 作成したオブジェクトを削除して、資源を解放する


            SysOraTran.Dispose()


            SysOraCon.Dispose()


            SysOraCon.Close()




        End Try


    End Function
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息