Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206

    [VBA] Esecuzione macro che dà un buffer overflow

    Ave populus,
    in una macro excel eseguo una query ad as400, ma la query tira fuori troppi dati, e l'applicativo và in buffer overflow, fermando l'esecuzione della macro

    Il codice della macro in questione è questo:
    codice:
    Option Explicit
    Const INIZIO As Integer = 2
    
    Sub estrai()
        Dim conn As Connection, CellaAtt As Range
        Dim rs As ADODB.Recordset, cmd As ADODB.Command, str As String
        Dim sql As String, i As Integer, data1 As String, data2 As String
        Set conn = CreateObject("ADODB.connection")
        
        str = "Driver={Client Access ODBC Driver (32-bit)}; Server=192.168.xxx.xxx; 
    Uid=user; Pwd=xxx; System=S44A3312;"
        conn.Open str
        Set cmd = CreateObject("ADODB.Command")
        Set cmd.ActiveConnection = conn
        cmd.CommandType = adCmdText
        sql = "select CART,CARV,XART, CSTA, CATG, CATS from MERSY_DB.arasso0f 
    where catg='GV' AND CATS ='01' order by cart, carv"
        cmd.CommandText = sql
        
        'ActiveSheet.Cells(1, 5) = (sql)
        
        Set rs = cmd.Execute()
        
        i = INIZIO
        
        While Not rs.EOF()
            ActiveSheet.Cells(i, 1) = rs(0)
            ActiveSheet.Cells(i, 2) = rs(1)
            ActiveSheet.Cells(i, 3) = rs(2)
            ActiveSheet.Cells(i, 4) = rs(3)
            ActiveSheet.Cells(i, 5) = rs(4)
            ActiveSheet.Cells(i, 6) = rs(5)
            rs.MoveNext
            i = i + 1
        Wend
          
        rs.Close
        Set rs = Nothing
        conn.Close
        Set conn = Nothing
    
        MsgBox ("Estrazione conclusa")
    End Sub
    P.S. le linee spezzate sono per esigenze di layout del forum

  2. #2
    Di preciso, dove viene segnalato l'errore?

  3. #3
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    Originariamente inviato da MdE2005
    Di preciso, dove viene segnalato l'errore?
    quando nel ciclo while arriva a un numero di record molto elevato; cmq non è più urgente

  4. #4
    Dipende quanto grande, il numero..se supera 32767 allora dipende dalla variabile "i", dichiarata come Integer..

    fammi sapere..

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.