scripting@wanadoo.nl




DBCommand()

http://www.scriptlogic.com/kixtart/FunctionLibrary_FunctionList.aspx


actual FunctionLibrary list on 'Scriptlogic' site printer-friendly mirror of UDF topic on 'scripting@wanadoo.nl' site close
19 January 2003 DBCommand()
AuthorJens Meyer (sealeopard@usa.net)
Action Executes a SQL statement and returns an array of records if applicable.
SyntaxDBCommand (dsn, SQL) 
Parameters
  • dsn (Required / String) Database connection string (ODBC format)
  • SQL (Required / String) SQL statement to be executed 
  • RemarksSee also DBConnOpen(), DBConnClose(), DBRecordsetOpen(), DBRecordsetClose(), DBGetRecordset(), DBExecuteSQL()

    KIXTART BBS http://www.kixtart.org/board/ultimatebb.php?ubb=get_topic;f=12;t=000328 
    Returns2-D array of records or an empty string (SELECT) or 0 if other SQL statement (CREATE, INSERT, UPDATE, DELETE, DROP,...) was executed successfully. 
    DependenciesKiXtart 4.12+ 
    Examples
    $dsn='DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=test.mdb'
    $sql="INSERT INTO Table1 VALUES('eee','fff')"
    $recordset = DBCommand($dsn,$sql)
    ? 'Error = '+@ERROR+' - '+@SERROR
    $sql="SELECT Field1, Field2 FROM Table1"
    $recordset = DBCommand($dsn,$sql)
    ? 'Error = '+@ERROR+' - '+@SERROR
    for $row=0 to ubound($recordset,1)
      for $column=0 to ubound($recordset,2)
        ? 'Field(row='+$row+', column='+$column+') ='+$recordset[$row,$column]
      next
    next
    
     
    Source
    FUNCTION DBCommand ($conndsn, $sql)
      DIM $objconn, $adstateopen
      DIM $conntimeout, $cmdtimeout
      DIM $cmdcommand, $rsrecordset
      DIM $records, $finalrecords
      DIM $adcmdtext, $adlockreadonly, $adopenstatic
      DIM $row, $rows, $column, $columns
    
      $conndsn=Trim($conndsn)
      IF NOT $conndsn
        EXIT 87
      ENDIF
      $sql=Trim($sql)
      IF NOT $sql
        EXIT 87
      ENDIF
    
      ; default database parameters
      $adstateopen=1
      $conntimeout=15
      $cmdtimeout=30
      $adcmdtext = 1
      $adopenstatic = 3
      $adlockreadonly = 1
    
      ; open the database connection
      $objconn = CreateObject("ADODB.Connection")
      IF @error
        EXIT @error
      ENDIF
      $objconn.connectiontimeout = $conntimeout
      IF @error
        EXIT @error
      ENDIF
      $objconn.commandtimeout = $cmdtimeout
      IF @error
        EXIT @error
      ENDIF
      $objconn.open($conndsn)
      IF @error
        EXIT @error
      ENDIF
      IF NOT $objconn.state=$adstateopen
        $objconn=''
        $dbcommand=''
        EXIT @error
      ENDIF
    
      ; create the database command object
      $cmdcommand = CreateObject('ADODB.Command')
      IF @error
        EXIT @error
      ENDIF
      $cmdcommand.activeconnection = $objconn
      IF @error
        EXIT @error
      ENDIF
      $cmdcommand.commandtype = $adcmdtext
      IF @error
        EXIT @error
      ENDIF
      $cmdcommand.commandtext = $sql
      IF @error
        $dbcommand=@error
        EXIT @error
      ENDIF
    
      IF InStr($sql,'SELECT') = 1
        ; create the recordset object
        $rsrecordset = CreateObject('ADODB.Recordset')
        IF @error
          EXIT @error
        ENDIF
        $rsrecordset.cursortype = $adopenstatic
        IF @error
          EXIT @error
        ENDIF
        $rsrecordset.locktype = $adlockreadonly
        IF @error
          EXIT @error
        ENDIF
        $rsrecordset.open($cmdcommand)
        IF @error
          EXIT @error
        ENDIF
    
        IF $rsrecordset.eof AND $rsrecordset.bof
          ; recordset is empty
          $finalrecords=''
        ELSE
          IF @error
            EXIT @error
          ENDIF
          ; retrieve all records at once and transpose into tabular format
          $records = $rsrecordset.getrows()
          $columns=UBound($records,1)
          $rows=UBound($records,2)
          REDIM $finalrecords[$rows,$columns]
          FOR $row=0 TO $rows
            FOR $column=0 TO $columns
              $finalrecords[$row,$column]=$records[$column,$row]
            NEXT
          NEXT
        ENDIF
    
        ; close recordset
        IF $rsrecordset.state=$adstateopen
          $rsrecordset.close()
          IF @error
            EXIT @error
          ENDIF
        ENDIF
    
        $rsrecordset=''
        $cmdcommand=''
        $dbcommand=$finalrecords
      ELSE
        $rsrecordset=$cmdcommand.execute()
        $cmdcommand=''
        $rsrecordset=''
        IF @error
          EXIT @error
        ENDIF
        $dbcommand=0
      ENDIF
    
      ; close the database connection
      IF $objconn.state = $adstateopen
        $objconn.close()
        IF @error
          EXIT @error
        ENDIF
      ENDIF
      $objconn=''
      EXIT 0
    ENDFUNCTION ; - DBCommand -
     
      original source of UDF topic. show actual FunctionLibrary list on Scriptlogic site close top
              printer-friendly mirror of UDF topic on scripting@wanadoo.nl site  




    Copyright © 2003 www.scriptlogic.com & scripting@wanadoo.nl - last updated on 20 May 2003


    Site Meter