Newsgroup: it.comp.lang.visual-basic
Titolo: Chi mi aiuta DB

Ciao
Sto provando a farmi un DB seguendo un libro,
ma siccome sono MOLTO inesperto confido in qualcuno
 in gamba che mi aiuti ,spero di esser chiaro ;-)
Sto provando con il classico Db studente,
ho usato un riferimento a Microsoft DAO 3.6 object library
ho fatto 4 textbox;
Nome, Cognome,Nr Matricola, studi
Mi son fatto il file mdb (studente)
I vari bottoni avanti,indietro,nuovo,aggiorna e aggiungi,
qui ho il problema quando faccio un nuovo-aggiungi-aggiorna NON mi salva
i nuovi dati nel mdb,PERCHE'?
--
Allora...ho fatto un button Nuovo:
Private Sub btnNew_Click()
'reset campi
matricola = ""
cognome = ""
nome = ""
studio = ""
' disabilita i bottoni
btnFirst.Enabled = False
btnPrevious.Enabled = False
btnNext.Enabled = False
btnLast.Enabled = False
btnUpdate.Enabled = False
btnNew.Enabled = False
'abilita btn Aggiungi
btnAdd.Enabled = True
'unlock matricola
matricola.Locked = False
matricola.SetFocus
End Sub
Mi deseleziona tutti i tasti tranne un bottone Aggiungi
inserisco i dati nei campi,poi clicco su Aggiungi, mi scrive
qualcosa nel mdb (non so cosa) poi clicco su aggiorna,fin qui
sembra che tutto funzioni,poi torno ad inizio DB dati vedo se' compare
la nuova voce dati che ho inserito ma niente,NON MI REGISTRA
i nuovi dati immessi,Perche??? ;-((((((
--- Button Aggiungi
Private Sub btnAdd_Click()
'inserisci nuovo record
rsStudente.AddNew
stUpdate
'riabilta i btn
btnFirst.Enabled = True
btnPrevious.Enabled = True
btnNext.Enabled = True
btnLast.Enabled = True
btnUpdate.Enabled = True
btnNew.Enabled = True
End Sub
---
--Button Aggiorna
Private Sub btnUpdate_Click()
rsStudente.Edit
stUpdate
End Sub
Sub stUpdate()
rsStudente!matricola = matricola
rsStudente!cognome = cognome
rsStudente!nome = nome
rsStudente!studio = studio
End Sub
---
Private Sub Form_Load()
' apre db
Set db = Workspaces(0).OpenDatabase("A:test.mdb")
' crea recordset studente
Set rsStudente = db.OpenRecordset("Studente")
' vedi il primo record
viewrecord
End Sub
--
Un'altra cosuccia cosa si usa per far aprire il file mdb in un percorso da
me scelto?
Es. vorrei farlo aprire con un percorso scelto da me e non prefissato
Ringrazio anticipatamente "la persona in gamba" che potra' aiutarmi,
veramente
Alf         eventualmente  alfdiriCHIOCCIOLAtin.it

 stUpdate
prova ad accodare un rsStudente.Update

che è stUpdate?!?!
vedi lupo :D

 prova ad accodare un rsStudente.Update
Adesso provo come dici,pero' io ho fatto una cosa cosi:
Sub stUpdate()
rsStudente!matricola = matricola
rsStudente!cognome = cognome
rsStudente!nome = nome
rsStudente!studio = studio
End Sub
Grazie   Spero che mi segui (se  non dovesse andare ;-))
E su questo punto si puo' afre qualcosa??
...aprire il file mdb in un percorso da me scelto?
Es. vorrei farlo aprire con un percorso scelto da me e non prefissato
A:dati.mdb
Ancora grazie
Alf

 che è stUpdate?!?!
Dal libro che ho dice:
Per modificare il contenuto dei campi; il metodo edit ne consente
l'aggiornamento,
il metodo update rende permanenti le modifiche
Alf

Il 04/01/2004 17.08, Alf scrisse:

appunto, il metodo Update del recordset. Come ti e' gia' stato suggerito 
la tua funzione deve diventare:
Sub stUpdate()
   rsStudente!matricola = matricola
   rsStudente!cognome = cognome
   rsStudente!nome = nome
   rsStudente!studio = studio
   rsStudente.update	'questa e' l'istruzione che aggiorna effettivamente 
il record
End Sub
ciao
	maxx
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

[*Alf* = 
cal...@tintin.it
 in news:3UWJb.38857$
VW.18...@news3.tin.it
] ha
scritto:

Appunto. Il metodo Update tu non l'hai usato.

 End Sub
Veramente io ho suggerito di aggiungere l'Update in altro luogo, ma puņ
andare lo stesso

 A:dati.mdb
A:dati.mdb, a parte il buonismo di VB e/o di ADO, non è un percorso
sintatticamente corretto.
Prova con A:\dati.mdb o con quello che vuoi

 Prova con A:\dati.mdb o con quello che vuoi
Qua forse non son stato chiaro, si be con A:\dati.mdb avevo solo scritto
male, ma
vorrei farlo aprire da un path, un percorso non predefinito,
quando mi parte il mio piccolo DB,far aprire una finestra dove chiede il
percorso del mio .mdb
e' possibile??
Grazie ancora
Alf

 maxx
Grazie Alf

 Appunto. Il metodo Update tu non l'hai usato.
Ora ho inserito (come suggerito anche da emmex) rsStudente.update
nella Sub stUpdate, il record viene aggiornato ma succede un'altra cosa :-(
Mi scrive 2 volte il record CANCELLANDOMI l'ultimo inserito, perche'?
Provo a spiegarmi...
Questo e'il file .mdb che mi apre il DB:
ID     nome     cognome    studio   Matricola
1       Mario     Rossi        xxx        01
2       Pippo     Pix            xxx        02
-- ora inserisco un nuovo record
3      Alf          Puf            xxxz      03
Clicco Aggiungi -Aggiorna, ecco il nuovo .mdb:
 ID     nome     cognome    studio   Matricola
1       Mario     Rossi        xxx        01
3      Alf          Puf            xxxz      03
3      Alf          Puf            xxxz      03
Mi sovrascrive o duplica, l'ultimo record
Perche'??? uhm......:-(
Sono "stato spiegato" ;-)
Grazie Alf

 
Perche' non ho letto attentamente il tuo codice e ti ho fatto inserire 
l'istruzione rsStudente.update nel posto sbagliato
Io aggiungerei un pulsante "Salva" in cui  inserire:
Private Sub btnSave()
    rsStudente.update
End Sub
In questo modo eventuali modifiche al record vengono salvate solo su 
comando esplicito.
ciao
	maxx
P.S. Ovviamente devi togliere rsStudente.update da stUpdate!


 ha scritto nel messaggio
news:caYJb.21664$Jw2....@tornado.fastwebnet.it...


 End Sub
Ho un button "Aggiorna" con questo codice....
Private Sub btnUpdate_Click()
rsStudente.Edit
stUpdate
Comunque provero'.....
Grazie Alf


 Cerberus
Ti ringrazio per il tuo interessamento,queste son cose che ho nel libro,
non so dove ho l'errore, non riesco a trovarlo...
Alf

Il 05/01/2004 11.07, Alf scrisse:
Teoria
Il principio di funzionamento del tuo programma e' abbastanza semplice.
O modifichi un record esistente o ne crei uno nuovo.
Per modificare un record esistente devi prima selezionarlo in qualche modo.
Se il record esiste riempi le caselle di testo con i valori.
E fai le modifiche.
Se e' nuovo inserisci nelle caselle i tuoi valori.
A questo punto o salvi o fai qualcosaltro.
Se salvi devi mettere i valori delle caselle nel record.
Ricapitolando, ma e' un esempio, e' possibile usare anche una logica 
diversa:
Se selezioni un record esistente puoi mettere un tasto edit che:
a. inserisce nelle caselle i valori dei campi del record
b. abilita un tasto Salva
c. istruzione rst.Edit
Se inserisci un nuovo record:
a. abiliti il tasto Salva
b. istruzione rst.addnew
quando hai terminato l'inserimento premi il tasto Salva che contiene le 
istruzioni:
rst!campo1=text1.text
rst!campo2=text2.text
...
rst.update
ciao
	maxx


 End Sub
Ed ora funziona....;-))
Un piccolo passo son riuscito a farlo ora provero' con altre cose...
Probabilmente non riusciro'...ma vorrei provarci.....
Quello che ho in mente e' questo:
- Non esiste nessuna procedura che verifica se il recordset (rsStudente) e'
vuota
- Se fosse possibile abilitare un pwd (una password) per aprire il DB in
Access
   forse sto dicendo una castroneria....
- Fare in modo che se lascio un record vuoto non mi dia errore, devo sempre
ricordarmi
 di immettere qualche dato e poi premere aggiungi,altrimenti mi da'
errore....
- Fare un Tasto search o find
Grazie 1000
 Alf

 
Studiati  l'istruzione FindFirst di DAO o Find e Filter di Ado, o anche 
il linguaggio SQL, in particolare le istruzioni SELECT e WHERE.
Il consiglio finale e' studiare molto e poi provare.
Scrivi prima sulla carta le tue idee, provale sulla carta e solo alla 
fine scrivi il codice.
ciao
	maxx


 maxx
Volevo solo ringraziarti...;-)
Alf