Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. Visual Studio 6.0
Applicazioni vb6 su Windows Vista
venerdì 06 aprile 2007 - 19.23
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Mimmozzo87
Profilo
| Junior Member
116
messaggi | Data Invio:
ven 6 apr 2007 - 19:23
ciao ragazzi.....avrei un problemino...
io programmi che faccio con vb6 non funzionano con Windows Vista
con xp va tutto perfetto
mi esce questo errore...
runtime error '91'
Object variable or with block variable not set
qualcuno sa aiutarmi???
grazie anticipante e...buona paqua a tutti
erongis
Profilo
| Junior Member
137
messaggi | Data Invio:
sab 7 apr 2007 - 09:46
Hai provato ad installare il vb6 su Vista e vedere cosa fa in debug. È una prova che dovresti fare, altrimenti sei costretto ad andare ad intuito...
Sicuramente è un problema di permessi utente. Adesso Vista chiude tutte le porte al contrario di XP.
Facci sapere novità.
Mimmozzo87
Profilo
| Junior Member
116
messaggi | Data Invio:
sab 7 apr 2007 - 09:57
no...ora provo ad installare vb6 su vista....
- ma se poi il debug funziona e poi nn posso installare il programma su altri pc che hanno vista?
- se ancora con vb installato il debug mi da errore?
ho provato ad installare altri programmi che ho creato...ma quando deve gare riferimento a database mi da l'errore sopra descritto...
- nn so...ho pensato che forse devo includere qualke file .dll o registri..ma nn so quali...
grazie dell'aiuto che potete fornirmi...CIAO
StefanoLep
Profilo
| Senior Member
248
messaggi | Data Invio:
gio 12 apr 2007 - 11:24
Ciao, questo è un documento relativo a problemi tra vb6 e vista. Lo ha scritto la software house che ha sviluppato un gestionale tutto in vb6, spero possa esserti d'aiuto:
Windows Vista e SQL Server 2005
Le procedure Gamma Enterprise e Gamma Sprint sono state entrambe sottoposte a delle verifiche tecniche allo scopo di validare il loro funzionamento sui sistemi operativi Vista e SQL SERVER 2005. Il procedimento di verifica è avvenuto attraverso l’accesso ad opportuni laboratori preparati da Microsoft utilizzando appropriati strumenti e tool di verifica di compatibilità.
Pur superando totalmente entrambi i laboratori, su Windows Vista e su SQL SERVER 2005, si sono comunque evidenziati alcuni problemi dovuti a dei BUG dei sistemi stessi. I Bug evidenziati sono in stato di risoluzione da parte di Microsoft.
Allo scopo di mantenere corrette le funzionalità delle procedure GE/GS sui sistemi Vista e SQL 2005, sono state apportate le necessarie modifiche all’applicativo che risolvono i problemi evidenziati. I correttivi apportati alle nostre procedure verranno descritte in questo documento allo scopo di metterVi nelle condizioni di poterle verificare ed implementare nelle vostre verticalizzazioni e/o personalizzazioni.
Windows Vista
In seguito al rilascio di Windows Vista da parte di Microsoft sono state rilevate dal nostro reparto di sviluppo, alcune incompatibilità in merito all’utilizzo di costrutti di programmazione in VB6.
La politica di Microsoft è, da tempo, quella di utilizzare come valori di sicurezza predefiniti le impostazioni più stringenti.
In particolare si è verificato che l’apertura di una nuova connessione ADO utilizzando la stringa di connessione prelevata da un oggetto connessione esistente, provoca errore.
Questo avviene perché su sistema Operativo Windows Vista la stringa restituita non contiene le necessarie informazioni inerenti l’utente e la password con cui si effettua la login a SQL Server 2000/2005.
Esempio:
Dim ObjConnessioneA As ADODB.Connection
Dim ObjConnessioneB As ADODB.Connection
Dim strConnessione As String
strConnessione="Provider=SQLOLEDB;server=PC-SERVER;uid=sa;pwd=pwdsa;database=GAMMATEST;OLE DB
Services=-1;Application Name=StartupGE_LIC"
With ObjConnessioneA
.CommandTimeout = 100
.CursorLocation = adUseClient
.ConnectionTimeout = 100
.IsolationLevel = adXactReadCommitted
.ConnectionString = strConnessione
.Open
End With
With ObjConnessioneB
.CommandTimeout = 100
.CursorLocation = adUseClient
.ConnectionTimeout = 100
.IsolationLevel = adXactReadCommitted
‘ ERRORE
.ConnectionString = ObjConnessioneA.ConnectionString
.Open
End With
Ovviamente il caso descritto è solo a titolo di esempio.
Un caso reale potrebbe essere quello di un oggetto connessione passato (ObjConnessioneA) per riferimento ad una classe e sfruttando le sue proprietà si apre una seconda connessione (ObjConnessioneB) al server.
Esempio:
Public ObjConnessioneA As ADODB.Connection
….
Dim ObjConnessioneB As ADODB.Connection
With ObjConnessioneB
.CommandTimeout = 100
.CursorLocation = adUseClient
.ConnectionTimeout = 100
.IsolationLevel = adXactReadCommitted
‘ ERRORE
.ConnectionString = ObjConnessioneA.ConnectionString
.Open
End With
La programmazione VB6 descritta sopra, sebbene poco elegante, era comunque funzionante su sistemi operativi Windows XP o precedenti.
NOTA
La soluzione al problema consiste nel bonificare queste sezioni di codice aprendo connessioni ADO sempre e solo dalla stringa di connessione completa.
Alla luce di questa considerazione l’esempio precedentemente riportato diventa:
Esempio:
Public ObjConnessioneA As ADODB.Connection
Public strConnessione As String
….
Dim ObjConnessioneB As ADODB.Connection
With ObjConnessioneB
.CommandTimeout = 100
.CursorLocation = adUseClient
.ConnectionTimeout = 100
.IsolationLevel = adXactReadCommitted
.ConnectionString = strConnessione
.Open
End With
Il gruppo di sviluppo Gamma Enterprise/Sprint da parte sua ha aggiunto ai parametri della stringa di connessione un attributo che permette alle informazioni di login di essere persistenti.
In particolare si aggiunge alla consueta stringa di connessione:
Persist Security Info=True
SQL Server 2005
I problemi riscontrati su SQL SERVER 2005 si aggirano sulle modalità tecnica adottate per l’invocazione delle Stored Procedure. In particolare riguarda la modalità di preparazione dei parametri come mostra l‘esempio seguente :
Set cmd = New ADODB.Command
With cmd
Set .ActiveConnection = cn
.CommandText = "SPMG_CALCOSTI_UN"
.CommandTimeout = 0
.CommandType = adCmdStoredProc
.NamedParameters = True
Set objParameter = New ADODB.Parameter
'aggiunto @TRETURN_VALUE
With objParameter
.Name = "@DITTA"
.Type = adNumeric
'.Type = adDecimal
.Precision = 5
.NumericScale = 0
.Direction = adParamInput
End With
.Parameters.Append objParameter
La modalità sopra descritta comporta lo scatenarsi dell’errore che l’immagine seguente mostra, ed è dovuto alla incompatibilità che SQL 2005 offre verso il tipo dati adDecimal. Infatti, se viene modificato il tipo dato da adDecimal e trasformandolo in adNumeric, l’errore scompare e la stored procedure viene eseguita, in apparenza, correttamente. Infatti dopo ulteriori verifiche abbiamo notato altri problemi,sempre dovuti ad una differente modalità di trattamento dei parametri.
In attesa di una soluzione da parte di Microsoft, abbiamo provveduto ad individuare una soluzione intervenendo sul codice che ci permette di poter eseguire correttamente le stored procedure su entrambi gli ambienti, SQL 2000 e SQL 2005. La soluzione è descritta dall’esempio seguente :
Set PCmdSP = New ADODB.Command
With PCmdSP
Set .ActiveConnection = Connessione
.CommandTimeout = 0
.CommandText = "CoordinaImpegnoDisimpegno"
.CommandType = adCmdStoredProc
.Parameters("@CodiceDitta") = Ditta
.Parameters("@FlagInternoEsterno") = rInternoEsterno
.Parameters("@TipoOperazione") = rTipoOperazione
.Parameters("@CodiceErrore") = 0
.Execute
Giamp72
Profilo
| Junior Member
115
messaggi | Data Invio:
ven 13 apr 2007 - 20:07
io ho provato diverse applicazioni che ho sviluppato in vb6 su vista, e non ho avuto problemi.. detto questo: verifica che i componenti che necessitano alla tua applicazione (dll e ocx) siano stati registrati correttamente.
Tieni presente che il 90% dei problemi su vista sono dovuti al controllo account utente, perciò basta disattivarlo e tutto comincia a funzionare per il meglio...
ciao
Giamp72
Mimmozzo87
Profilo
| Junior Member
116
messaggi | Data Invio:
sab 14 apr 2007 - 09:23
hai provato anche la connettività al database??
Teech
Profilo
| Expert
573
messaggi | Data Invio:
gio 26 apr 2007 - 14:15
Ho lo stesso identico problema...
Da verifiche effettuate mi risulta che il problema si verifica quando istanzio un componente da me creato.
Ho un componente pippo.dll referenziato nel mio progetto
Quando eseguo l'istruzione
Dim myPippo as CLSPIPPO
Set myPippo = New CLSPIPPO
esce l'errore istanziando la classe. Non capisco però da dove deriva il problema... Qualcuno può aiutarmi? Premeto che non conosco minimamente Vista...
Grazie
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
tonymask
Profilo
| Newbie
1
messaggi | Data Invio:
ven 10 ago 2007 - 15:19
A proposito di Visual Basic 6 sotto VISTA.
Tempo fa avevo letto che non si poteva utilizzare il "sendkeys" in fase di debug...(infatti l'ho provato e non funziona).
Tanto che ho dovuto tenere 1 HD con XP per poter utilizzare VB6.
Ripeto in fase di DEBUG perchè il programma compilato poi funziona perfettamente sotto VISTA.
Sapete se hanno ovviato a questo inconveniente ?
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !