Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Gordio
    Registrato dal
    Mar 2006
    Messaggi
    37

    Passaggio variabili in Query

    Salve a tutti!!
    Ho un problema che mi sta facendo dannare da un paio di giorni. In poche parole prendo dei valori da un DB Access che confronto su un DB2 su AS400 e devo andare a riscrivere nel DB Access un valore corrispondente

    Codice articolo dal DB access e la descrizione dal DB2!!

    Le singole parti del codice funzionano, ma quando vado a mettere la variabile nella condizione where della query su AS400 , mi va in (credo) LOOP e di conseguenza in TImeOut!!

    codice:
    ' ---------- Apre la connessione con il DB Access ------ 
    'filepatch= Server.MapPath ("DBfabbi/appofabb.mdb")
    '------- Creo un RS con i codici con FLAG1 vuoto -----------
    
    'Sql="SELECT codice FROM Tb_fabbisogno WHERE flag1 IS NULL"
    'set Conn= Server.CreateObject("ADODB.Connection")
    'Conn.open ("Provider = Microsoft.Jet.OLEDB.4.0;Data Source =" +filepatch)
    'set Rs_ADB = Server.CreateObject("ADODB.Recordset")
    'set Rs_ADB = Conn.Execute (Sql)
    
    'do while NOT Rs_ADB.EOF
    '  	Acodice=Rs_ADB(0)
    '	Response.Write ("Codice da Access= ") & Acodice & "</br>"
    	Adesc=PrendiDesc(Acodice)
    	Response.Write ("Descrizione dalla funzione= ") & Adesc & "</br>"
    '	Aflag="x"
    '       Sql1= "UPDATE Tb_Fabbisogno SET desccod='" & Adesc & "', flag1='" & Aflag & "' WHERE (A§COAR='" & Acodice & "')"
    '	Conn.execute(Sql1)
    '	Rs_ADB.movenext	  
    'loop
     
    '------------ chiudi RS e connessione ACCESS --------
    'Rs_ADB.Close
    'set Rs_ADB = Nothing
    'Conn.Close
    'set Conn = Nothing 
    
    
    '---------------- Funzione leggi AS------------------- 	 
    Function PrendiDesc(Acodicex)
    Dim appo, appo1
    'appo1=Acodicex
    appo1="69-202340A"
    Response.Write ("Var appo1----= ") & appo1 & "</br>"
    '------- dichiarazione di connessione AS400---------
    
    ConnectionString = "Provider=IBMDA400;Data Source=" & Session("AS400_SystemName") & ";"
    CommandText = "SELECT A§DEAR FROM " & Session("Library") & "." & Session("FileName") & " WHERE A§COAR='" & appo1 & "'"
    CommandType = adCmdText
    
    '------ apertura connessione AS400--------------
    Set AS400Connection = Server.CreateObject("ADODB.Connection")
    AS400Connection.Open ConnectionString,Session("As400_Userid"),Session("AS400_Password")
    Set AS400Command = Server.CreateObject("ADODB.Command")
    AS400Command.ActiveConnection = AS400Connection 
    
    '-------------Comandi da eseguire sul sistema AS/400------
    		AS400Command.CommandText = CommandText
    		AS400Command.CommandType = CommandType 
    				
    Set AS400File_rs = AS400Command.Execute
    	If (Err.Number = 0 ) Then
    	   While NOT AS400File_rs.EOF
    	     appo=AS400File_rs(0)
    '	     Response.Write ("Descrizione da AS----= ") & AS400File_rs(0) & "</br>"
    	    Response.Write ("Descrizione in appo da AS----= ") & appo & "</br>"
    '	    PrendiDesc=AS400File_rs(0)
    	    PrendiDesc=appo
    	AS400File_rs.movenext
    	   Wend
    	  AS400File_rs.Close
    	  Set AS400File_rs = Nothing
    	  AS400Connection.Close
    	  Set AS400Connessione = Nothing
    	  Set AS400Command = Nothing 
        Else
         DisplayError AS400Connection, Err.Number, Err.Description, Err.Source, "Main"
          End If	   
    End Function
    nell'esempio riportato ho inizializzato la var appo1 con un codice ed il RW mi da a schermo la sua descrizione, ma se provo a dargli la variabile che viene dal RS di Access non funziona più


  2. #2
    codice:
    '       Sql1= "UPDATE Tb_Fabbisogno SET desccod='" & Adesc & "', flag1='" & Aflag & "' WHERE (A§COAR='" & Acodice & "')"
    '	Conn.execute(Sql1)
    qui l'ggetto Conn è aperto su un database Access...te mi sembra stia facendo un update per il database as400...devi cambiare oggetto connessione


    poi da qualche parte immagino che tu abbia un "on error resume next"....toglilo e prova a vedere se ti restituisce un errore...


  3. #3
    Utente di HTML.it L'avatar di Gordio
    Registrato dal
    Mar 2006
    Messaggi
    37
    Originariamente inviato da santino83
    codice:
    '       Sql1= "UPDATE Tb_Fabbisogno SET desccod='" & Adesc & "', flag1='" & Aflag & "' WHERE (A§COAR='" & Acodice & "')"
    '	Conn.execute(Sql1)
    qui l'ggetto Conn è aperto su un database Access...te mi sembra stia facendo un update per il database as400...devi cambiare oggetto connessione


    poi da qualche parte immagino che tu abbia un "on error resume next"....toglilo e prova a vedere se ti restituisce un errore...


    Grazie Santino

    MA l'UPDATE lo devo fare proprio su ACCESS...
    la sequenza logica dovrebbe essere:
    Apro Access, leggo ARTICOLO,
    Apro As400 a parità di articolo prendo la DESCRIZIONE, Scrivo su Access la descrizione e vado al RS successivo.

    Ho tolto ON ERROR... ma nulla !! il Server.ScriptTimeout = 240 perciò ha tutto il tempo per fare il suo lavoro
    e sul LOG dell'AS400 le chiamate al DB vengono aperte!!

    Sto sclerando!!!

  4. #4
    Utente di HTML.it L'avatar di Gordio
    Registrato dal
    Mar 2006
    Messaggi
    37
    Sicuramente si blocca qui!!

    codice:
    CommandText = "SELECT A§DEAR FROM " & Session("Library") & "." & Session("FileName") & " WHERE A§COAR='" & appo1 & "'"
    sembra che non riesca a fare il confronto nel WHERE,
    anche perchè se metto un valore alla Var 'appo1' il tutto funziona!!!

  5. #5
    Utente di HTML.it L'avatar di Gordio
    Registrato dal
    Mar 2006
    Messaggi
    37
    RISOLTO !!!!
    era solo una questione di tempo !!!
    stranamente il tutto è molto lento ci mette 1 minuto ogni 100 record, visto che sono ondate da 1500 record a botta VVoVe: VVoVe: ci mettera un quarto d'ora!!!!

    COme pensate possa ottimizzare il tutto???? :master: :master:

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.