Newsgroup: it.comp.lang.visual-basic
Titolo: [VB6] Abbiate pietà :(

E' ormai una settimana che ci perdo la testa... ho letteralmente setacciato
i post precedenti alla ricerca del mio problema... ma alla fine ho solo
raccolto consigli che pero' non hanno cambiato una virgola... e tutto questo
perchè so che è un argomento già trattato... o almeno ne ho molto il
sentore.
PROBLEMA:
Ho la mia mega agenda di *allenamento visual basic* che funziona benissimo
sotto WinXP.
Uso database ACCESS 2002
Uso Microsoft.Jet.OLEDB.4.0
(ADO)
Lo stesso programma non vuole funzionare sotto Win98
Ho provato ad installare su Win 98 : Mdac 2.7, JetSP3, dcom98
Ho *degradato* il file ACCESS 2002 ad ACCESS 97
Ho provato a scrivere Microsoft.Jet.OLEDB.3.51
Adesso riesco ad aprire il recordset ma quando faccio *salva persona* mi da
errore... un'avviso del tipo "inserimento multiplo vietato...
ricontrollare.."?????????????????????????
C'è qualcos'altro che posso provare?
Vi ringrazio in anticipo
-Mad-

 ricontrollare.."?????????????????????????
Probabilmente stai aggiungendo un record con una chiave già presente in un
indice con chiave univoca.
Come pensi che noi possiamo indovinare, senza un pezzetto di codice?

 Come pensi che noi possiamo indovinare, senza un pezzetto di codice?
Hai ragione... ma si tratta del classico "aggancio" al database..
poi assegno il valore dei recordset ai vari campi text
Quando schiaccio "Salva Persona" immetto i text nei recordset con (ad
esempio) rs.addnew all'inizio..
Comunque eccolo:
CONNESSIONE:
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.CursorLocation = adUseServer
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dati.mdb"
rs.CursorLocation = adUseServer
rs.Open "SELECT * FROM archivio ORDER BY cognome", cn, adOpenKeyset,
adLockOptimistic, adCmdText
SALVATAGGIO
rs.AddNew
rs("cognome") = cognome.Text
rs("nome") = nome.Text
rs("citta") = citta.Text
rs("residenza") = residenza.Text
rs("telefono") = telefono.Text
Ma ripeto.. è un problema sotto Win98...
Grazie
-Mad-


io ho avuto problemi come dici tu ma perchè da quanto sono riuscito a capire
il Jet non c'è in Mdac 2.7
ma fino alla 2.5 e quindi andava in crash, qui vedo che hai installato
JetSp3 non sapevo che c'era in versione
apparte, non so prova ad installare l'mdac 2.5
io ho sviluppato una mini applicazione proprio sotto le feste di Natale e
grazie a Lupo
e ad altri utenti del newsgroup ho risolto i miei problemi

 Ho provato a scrivere Microsoft.Jet.OLEDB.3.51
1)
Che riferimenti ad ADO utilizzi? Visto che hai MDAC27, referenzia ADO2.7
2)
E' un 98 prima o seconda edizione?
3)
L'ordine corretto di installazione è quello ben noto:
DCOM98 -> MDAC2.7 -> JET40SP3, non vanno invertiti.
Il provider JET oledb 4 va benissimo, puoi lasciare quello.
A livello del codice, se mi dici che con XP va bene e solo sulla macchina 98
non va, non saprei esattamente cosa dirti.
Hai fatto un setup normale, e questo è andato bene sul 98?
Alberto

 Alberto


Ho installato mdac2.7 sapendo che non c'era il Jet... ma leggendo sul sito
Microsoft ho letto che bastava installare JetSP3 ... che database hai usato
per il tuo programmino?
-Mad-


piattaforma di sviluppo...un pò win2kpro sp3 con vb6sp5 e un pò xp pro sp1
con vb6sp5
il programma è stato realizzato per girare per forza di cose su un win95
osr2.5
ho fatto una installazione di win95 su macchina virtuale e ho installato il
programma prima installando
l'mdac 2.7 poichè avevo selezionato nel mio progetto i riferimenti ad ado
2.7 ma non ne voleva sapere
di funzionare, poi ho letto che ci doveva essere almeno ie4 e dcom e cosi ho
fatto ma il risultato non cambiava
alla fine  sul newsgroup mi hanno fatto notare che usavo il jet che non era
incluso nell'mdac 2.7 cosi ho installato
l'mdac 2.5 e tutto è funzionato alla perfezione.
Il database è un database access 2000 o 2002(xp) non ricordo.
ti posto il codice che utilizzo io
Sub Main()
Dim strConn As String
Dim nome_database As String
nome_database = "data\sisal.mdb"
strConn = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & nome_database &
";USER ID=;"
Set MyConn = New Adodb.Connection
MyConn.Open strConn
Set RsBordero = New Adodb.Recordset
RsBordero.CursorType = adOpenDynamic
RsBordero.LockType = adLockOptimistic
RsBordero.Open "bordero", MyConn, , , adCmdTable
frmMain.Show
End Sub
eppoi nel codice della form lo utilizzo normalmente con RsBordero.AddNew,
RsBordero.Update oppure avanti e dietro o cancella senza nessun problema

> Alberto
--
%%============================%%
Il Wodkino Nazionale è raggiungibile anche a :
www.martek.it
Ed ha pure il forum...
http://www.martek.it/go.asp?PortamiA=1

 rs("telefono") = telefono.Text
Fermo restando gli interventi degli altri, in particolare quelli sulla
creazione del pacchetto di installazione, l'istruzione rs.update alla fine
del settaggio dei campi, l'hai messa?

 fine del settaggio dei campi, l'hai messa?
Sisi, l'ho solo omessa nella mail ...
-Mad-

Scusate ma stranamente adesso funziona...
ovvero continuava a non funzionare e allora ho fatto debug continuato
(mettendo un apostrofo su ogni linea su cui dava errore per farlo diventare
un commento) e mi sono accorto che l'errore (run-time 80040e21) mi veniva
dato solo sui campi di cui non era obbligatorio l'inserimento...
Quindi ho aggiunto ad esempio:
PRIMA: rs("residenza") = residenza.Text
DOPO: rs("residenza") = residenza.Text & ""
E adesso funziona tutto benissimo!!!
Il mio dubbio pero' rimane: perchč a WinXP non gliene fregava nulla di
quella cosa e invece Win98SE la pretendeva?
-Mad-

 Sisi, l'ho solo omessa nella mail ...
Ok. Segnalaci, esattamente, il codice e la descrizione dell'errore.

 quella cosa e invece Win98SE la pretendeva?
Forse perchè XP ha ADO 2.7 preinstallato (ma il tuo progetto che ADO
dichiara fra i riferimenti?):
Sembrerebbe un buco di ADO, corretto dalla versione 2.5
http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B239781