Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    384

    Errore inserimento su transazione

    Ciao,
    ho questo codice che funziona bene se uso un DB access, mi inserisce una riga di log in una tabella, ma sto migrando su MariaDB e adesso mi va in errore sulla riga segnata
    codice:
    SUB LogRiubicazione(codScatola, scatola, codArch, codUbicazioneOLD, UbicazioneOLD, codUbicazioneNEW, UbicazioneNEW, data, codiceOperatore, percorsoDB)
    	'inserisco una riga nel DB storicoubi
    
    
    	Call CreaConnDB(Mariadb_driver,"ConnStoricoUBI", percorsoDB, Mariadb_portserver, Mariadb_server, Mariadb_user, Mariadb_password, Mariadb_option, Mariadb_charset)
    	
    	ConnStoricoUBI.BeginTrans
    	
    	SQLSTO = "INSERT INTO storicoUbi (codScatola, scatola, codArch, codUbicazioneOLD, UbicazioneOLD, codUbicazioneNEW, UbicazioneNEW, data, codOpe) "& _
    				" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);"
    	set cmdSTO = server.createobject("ADODB.Command")
    	cmdSTO.ActiveConnection = ConnStoricoUBI
    	cmdSTO.CommandText = SQLSTO
    	cmdSTO.CommandType = adCmdText
    	cmdSTO.CommandTimeout = 900
    	
    	cmdSTO.Parameters.Append cmdSTO.CreateParameter("codScatola", adInteger, adParamInput, , codScatola )
    	cmdSTO.Parameters.Append cmdSTO.CreateParameter("scatola", adDouble, adParamInput, , scatola )
    	cmdSTO.Parameters.Append cmdSTO.CreateParameter("codArch", adInteger, adParamInput, , codArch )
    	cmdSTO.Parameters.Append cmdSTO.CreateParameter("codUbicazioneOLD", adInteger, adParamInput, , codUbicazioneOLD )
    	cmdSTO.Parameters.Append cmdSTO.CreateParameter("UbicazioneOLD", adVarChar, adParamInput, 30, UbicazioneOLD )
    	cmdSTO.Parameters.Append cmdSTO.CreateParameter("codUbicazioneNEW", adInteger, adParamInput, , codUbicazioneNEW )
    	cmdSTO.Parameters.Append cmdSTO.CreateParameter("UbicazioneNEW", adVarChar, adParamInput, 30, UbicazioneNEW )
    	cmdSTO.Parameters.Append cmdSTO.CreateParameter("data", adDBTimeStamp, adParamInput, , data )
    	cmdSTO.Parameters.Append cmdSTO.CreateParameter("codOperatore", adInteger, adParamInput, , codiceOperatore )
    
    
    	cmdSTO.Execute  '<---- errore qui
    	
    	set cmdSTO = nothing
    
    
    	On Error Resume Next
    	If Err.number = 0 and ConnStoricoUBI.Errors.Count = 0 Then
    		ConnStoricoUBI.CommitTrans
    	Else
    		ConnStoricoUBI.RollbackTrans
    		'ConnStoricoUBI.close
    		'set ConnStoricoUBI=nothing
    		Call ChiudiConnDB("ConnStoricoUBI")
    
    
    		esitoOP "Si e' verificato un errore, eseguito il rollback",""
    	End If
    	On Error GoTo 0
    
    
    	Call ChiudiConnDB("ConnStoricoUBI")
    End SUB
    CreaConnDB e ChiudiConnDB aprono e chiudono la connessione, l'errore che mi esce e' Microsoft OLE DB Provider for ODBC Driverserror '80004005'La transazione non supporta set di record multipli con questo tipo di cursore. Modificare il tipo di cursore, eseguire il commit della transazione oppure chiudere uno dei set di record.

    come imposto il cursore su un command? ho cercato ma non si può
    se tolgo le transazioni il record e' inserito correttamente, come posso risolvere?
    Da un grande potere derivano grandi responsabilità

  2. #2
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    384
    Sono due ore che ci giro attorno, sono riuscito a capire che il problema sta sui parametri e cioe' qui

    cmdSTO.Parameters.Append cmdSTO.CreateParameter("UbicazioneOLD", adVarChar, adParamInput, 30, UbicazioneOLD )

    se commento l'inserimento dei due parametri di testo (e aggiorno l'sql) tutto funziona regolarmente, se li metto va in errore

    cosa devo impostare come tipologia? ho provato adChar, adBSTR ma non funziona lo stesso
    Da un grande potere derivano grandi responsabilità

  3. #3
    come sono dichiarate quelle colonne a db?

  4. #4
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    384
    cosi
    -- Dump della struttura di tabella storicoubi.storicoubi
    CREATE TABLE IF NOT EXISTS `storicoubi` (
    `ID` int(11) NOT NULL AUTO_INCREMENT,
    `codScatola` double DEFAULT NULL,
    `scatola` double DEFAULT NULL,
    `codArch` int(11) DEFAULT NULL,
    `codUbicazioneOLD` int(11) DEFAULT NULL,
    `UbicazioneOLD` char(30) DEFAULT NULL,
    `codUbicazioneNEW` int(11) DEFAULT NULL,
    `UbicazioneNEW` char(30) DEFAULT NULL,
    `data` datetime DEFAULT NULL,
    `codope` int(11) DEFAULT NULL,
    PRIMARY KEY (`ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=12301 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
    Da un grande potere derivano grandi responsabilità

  5. #5
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    384
    Credo sia un bug del driver odbc mysql 8.0.33, ho provato ad aggiornare all 8.1 e continua a presentarsi lo stesso errore.
    Con i driver odbc mariadb 3.1 non si presenta quell'errore ma non ci sono piu a 32bit
    Da un grande potere derivano grandi responsabilità

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 © 2024 vBulletin Solutions, Inc. All rights reserved.