Transazioni VB con Oracle Salve mi chiamo Andrea e volevo porvi una domanda se è possibile: per gestire le transazioni su un Db con Visual Basic attraverso il motore ADO utilizzo il seguente listato: Public Sub Esegui() ssql = "INSERT INTO UTENTI VALUES (1, 'PIPPO', 'PIPPO') conn.Execute(ssql) ssql = "INSERT INTO
TRACK_LOG VALUES ('CREAZIONE UTENTE PIPPO') conn.CommitTrans Quindi sia su Access che su SQL Server 7.0 finché
non esegue la CommitTrans i dati non vengono scritti fisicamente sul db
e se eseguo una RollbackTrans al posto della commit il db mi annulla
l'inserimento che ho fatto; con Oracle versione 8.04 invece ho notato
che anche se eseguo la RollbackTrans lui mi fa ugualmente la prima
"INSERT INTO Utenti ...", quindi è come se mi facesse un'auto
Commit della prima istruzione e la rollback della seconda istruzione
"INSERT INTO Track_log ...". Public Sub Esegui() ssql = "INSERT INTO UTENTI
VALUES (1, 'PIPPO', 'PIPPO') ssql = "INSERT INTO
TRACK_LOG VALUES ('CREAZIONE UTENTE PIPPO') conn.RollbackTrans Perché con Access e SQL Server mi funziona e
quindi annulla le due INSERT e con Oracle no? C'è qualche settaggio
particolare di Oracle che non va? Spero che la mia domanda sia stata
chiara. Andrea D'Angelo Risponde Davide Quack Conosco male Oracle ma credo di poterle dare delle
indicazioni utili per la risoluzione del suo problema. Devo però
innanzi tutto correggerla. L'esecuzione di transazione non vuol dire che
i dati non sono scritti fino al commit, ma che è possibile annullare le
modifiche in caso di rollback. Sembra una distinzione di lana caprina,
ma in un ambiente concorrente, o se si fa uso di trigger, questa
differenza è vitale.
Assembly e moduli .NET Gentile Alberto Falossi, Giacomo V. Risponde Alberto Falossi Si può pensare ad un assembly come un EXE o una DLL
logica in .NET. Un assembly è identificato da un nome e una versione
come avviene per i componenti COM. La definizione di "eseguibile
logico" è dovuta al fatto che un assembly non è necessariamente
una singola entità ma al suo interno può essere formato da vari
moduli. csc /out:MyApp.exe /t:module MyApp.cs csc /out:MyApp.exe /t:exe MyApp.cs Nel primo caso MyApp è compilato in un modulo che,
anche se ha estensione exe, non può essere eseguito (sarà visualizzato
"MyApp.exe is not a valid Win32 application"). Nel secondo
caso MyApp.exe è un assembly e può essere eseguito normalmente.
Problemi con l'uso della Wscript.shell Il mio problema è il seguente: lavoro con due PC
Windows NT 4.00, su entrambi è installato Visual Studio 6.0 ma
stranamente solo su uno dei due la funzione Wsript.shell richiamata in
un programma Visual Basic funziona, quindi vorrei sapere quale libreria,
o altro, si porta dietro la Wsript. Avrei una certa urgenza per cui le
sarei grata se potesse darmi una risposta nel più breve tempo
possibile. Barbara Stefano Risponde Dino Esposito Probabilmente solo su uno dei due è installato il WSH che non è standard su tutte le versioni SP di NT4. Verifica se ci sono wscript.exe e wshom.ocx. Se WSH non è installato correttamente scarica il file setup da http://msdn.microsoft.com/scripting/.
Problemi con il Data Control di VB Spett/le Signor Falossi, Pierfrancesco Zicarelli Risponde Alberto Falossi L'errore si presenta perché quando si esegue AddNew(),
VB tenta di salvare il recorset attualmente puntato dal data control.
Probabilmente nel suo caso il data control sta puntando a NULL, non a un
recorset empty. Mi sembra di ricordare che se si effettua un controllo
sulle proprietà BOF o EOF (con If) prima di aggiungere un record il
problema non si verifica. Altrimenti credo basti far puntare il data
control a un elemento consistente del db.
|