⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frequest.class

📁 Gambas is a graphical development environment based on a Basic interpreter, like Visual Basic. It us
💻 CLASS
字号:
' Gambas class filePUBLIC Connection AS CConnectionPRIVATE $rData AS ResultPRIVATE $sCharset AS StringPRIVATE $sPath AS StringPUBLIC SUB _new(hConn AS CConnection)  Connection = hConn  $sCharset = Connection.GetCharset()  RefreshTitle  'FMain.MoveRandom(ME)  btnNew_Click  splRequest.Layout = "500,500"ENDPUBLIC SUB EncodingChange()  $sCharset = Connection.GetCharset()  tbvData.RefreshENDPRIVATE SUB RefreshTitle()  DIM sTitle AS String  IF $sPath THEN    sTitle = File.Name($sPath)  ELSE    sTitle = ("SQL request")  ENDIF  sTitle = Connection.Server.Name & " - " & Connection.Name & " - " & sTitle  lblTitle.Text = sTitleENDPRIVATE SUB ReadData()  DIM hField AS ResultField  DIM sField AS String  DIM iInd AS Integer  DIM iLen AS Integer  DIM sReq AS String  DIM iPos AS Integer  INC Application.Busy  lblRequest.Text = ("No records.")  tbvData.Rows.Count = 0  sReq = Trim(txtRequest.Text)  FOR EACH sReq IN Split(sReq, ";", Chr$(34) & "'")    sReq = Trim(sReq)    WHILE Instr("#;'", Left$(sReq))      iPos = Instr(sReq, "\n")      IF iPos THEN        sReq = Trim(Mid$(sReq, iPos + 1))      ELSE        sReq = ""      ENDIF    WEND    IF NOT sReq THEN CONTINUE    'PRINT "Exec: "; sReq    $rData = Connection.Handle.Exec(sReq)  NEXT  IF NOT $rData THEN    panData.Visible = FALSE  ELSE    tbvData.Columns.Count = $rData.Fields.Count    FOR EACH hField IN $rData.Fields      WITH hField        tbvData.Columns[iInd].Text = .Name        tbvData.Columns[iInd].Width = Connection.WidthFromType(tbvData, .Type, .Length, .Name)      END WITH      INC iInd    NEXT    tbvData.Rows.Count = $rData.Count    IF $rData.Count = 1 THEN      lblCount.Text = ("One record")    ELSE IF $rData.Count > 1 THEN      lblCount.Text = Subst(("&1 records"), $rData.Count)    ENDIF    panData.Visible = $rData.Count > 0  ENDIFFINALLY  DEC Application.BusyCATCH  lblRequest.Text = ("Cannot exec request.") & "\n\n" & Error.Text  panData.HideENDPUBLIC SUB tbvData_Data(Row AS Integer, Column AS Integer)  $rData.MoveTo(Row)  IF $sCharset THEN    tbvData.Data.Text = Conv(Str($rData[tbvData.Columns[Column].Text]), $sCharset, Desktop.Charset)  ELSE    tbvData.Data.Text = Str($rData[tbvData.Columns[Column].Text])  ENDIFENDPUBLIC SUB btnNew_Click()  tbvData.Rows.Count = 0  lblRequest.Text = ("Enter your request...")  panData.Hide  $rData = NULL  txtRequest.Text = ""  txtRequest.SetFocusENDPUBLIC SUB btnRun_Click()  ReadDataEND' PUBLIC SUB splRequest_Resize()''   WITH panRequest'     tbvData.Move(0, 0, .ClientW, .ClientH)'     lblRequest.Move(8, 8, .ClientW - 16, .ClientH - 16)'   END WITH'' ENDPUBLIC SUB btnLoad_Click()  IF $sPath THEN Dialog.Path = $sPath  Dialog.Filter = [ ("SQL script files") & " (*.sql)", ("All files") & " (*.*)" ]  IF Dialog.OpenFile() THEN RETURN  $sPath = Dialog.Path  txtRequest.Text = File.Load($sPath)  RefreshTitleCATCH  Message.Error(("Cannot load SQL script file.") & "\n\n" & Error.Text)ENDPUBLIC SUB btnSave_Click()  IF NOT Trim(txtRequest.Text) THEN RETURN  Dialog.Filter = [ ("SQL script files") & " (*.sql)", ("All files") & " (*.*)" ]  Dialog.Path = $sPath  IF Dialog.SaveFile() THEN RETURN  $sPath = Dialog.Path  File.Save($sPath, txtRequest.Text)  RefreshTitleCATCH  Message.Error(("Cannot save SQL script file.") & "\n\n" & Error.Text)ENDPUBLIC SUB btnClose_Click()  ME.CloseENDPUBLIC SUB txtRequest_KeyPress()  IF Key.Code = Key["F5"] THEN btnRun_ClickENDPRIVATE FUNCTION GetData(sSep AS String) AS String  DIM sTemp AS String  DIM hFile AS File  DIM bFirst AS Boolean  DIM bAll AS Boolean  DIM bOK AS Boolean  DIM hField AS ResultField  INC Application.Busy  sTemp = Temp$  OPEN sTemp FOR CREATE AS #hFile  FOR EACH hField IN $rData.Fields    IF NOT bFirst THEN      bFirst = TRUE    ELSE      PRINT #hFile, sSep;    ENDIF    PRINT #hFile, Chr$(34); hField.Name; Chr$(34);  NEXT  PRINT #hFileRETRY:  FOR EACH $rData    IF NOT bAll THEN      IF NOT tbvData.Rows[$rData.Index].Selected THEN CONTINUE    ENDIF    bOK = TRUE    bFirst = FALSE    FOR EACH hField IN $rData.Fields      IF NOT bFirst THEN        bFirst = TRUE      ELSE        PRINT #hFile, sSep;      ENDIF      IF hField.Type = gb.String THEN        PRINT #hFile, Chr$(34); Replace(Str($rData[hField.Name]), Chr$(34), Chr$(34) & Chr$(34)); Chr$(34);      ELSE        PRINT #hFile, Chr$(34); Str($rData[hField.Name]); Chr$(34);      ENDIF    NEXT    PRINT #hFile  NEXT  IF NOT bAll THEN    IF NOT bOK THEN      bAll = TRUE      GOTO RETRY    ENDIF  ENDIF  CLOSE #hFile  DEC Application.Busy  RETURN sTempENDPUBLIC SUB btnSaveData_Click()  DIM sTemp AS String  'Dialog.Path = FMain.Config.ReadString("/Request/Save", "/home/benoit")  Dialog.Path = Settings["/Request/Save", System.Home]  Dialog.Filter = [ ("Comma-separated values files") & " (*.csv)", ("All files") & " (*.*)" ]  IF Dialog.SaveFile() THEN RETURN  IF NOT File.Ext(Dialog.Path) THEN    Dialog.Path = File.Dir(Dialog.Path) &/ File.BaseName(Dialog.Path) & ".csv"  ENDIF  sTemp = GetData(",")  KILL Dialog.Path  COPY sTemp TO Dialog.Path  KILL sTempCATCH  Message.Error(("Cannot export data.") & "\n\n" & Error.Text)  TRY KILL sTempENDPUBLIC SUB btnCopyData_Click()  DIM sTemp AS String  sTemp = GetData(",")  Clipboard.Copy(File.Load(sTemp))  KILL sTempEND

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -