PDA

Visualizza la versione completa : Salvataggio di dati (VB)


xit
15-07-2002, 17:19
Io ho un form con 4 campi : Cognome,Nome,Ruolo,Alias.Il campo
alias sono obbligato ad inserirlo solo se nome e cognome sono
già presenti nel db.
Io inserisco per la prima volta: Mario,Rossi,Insegnante.
Se io inserisco un'altra volta il nome e cognome Mario,Rossi siccome
li trova già nel db mi dice di dover inserire anche l'alias.
Mi trovo nell'evento click del bottone salva, come posso fare
questo salvataggio?









Private Sub cmdSalva_Click()
Dim dbConn As New ADODB.Connection
Dim dbrec As New ADODB.Recordset
Dim strConnectionString As String
Dim strSQL As String
Dim strSQL1 As String

Dim iNome, iCognome, iRuolo, iAlias

iAlias = txtAlias.Text
iNome = txtNome.Text
iCognome = txtCognome.Text


If txtNome.Text = "" Or txtCognome.Text = "" Or cmbRuolo.Text = "" Then
MsgBox "Inserisci i campi obblibatori * mancanti", vbInformation
Exit Sub
End If

g_strConnectionString = "maia"


'Apro una connessione con il database
dbConn.ConnectionString = g_strConnectionString
dbConn.Open
Dim aRes As Boolean
aRes = controlladati(iCognome, iNome, dbConn)
If aRes = True Then
Beep
MsgBox "Inserisci l'ALIAS", vbInformation
Else
dbrec.Open "Ruolo", dbConn, adOpenForwardOnly, adLockOptimistic, -1
While Not dbrec.EOF
ruolo = dbrec("Ruolo")
'cmbRuolo.AddItem ruolo
Dim collRuolo As New Collection
collRuolo.Add Int(dbrec("ID_Ruolo")), ruolo
dbrec.MoveNext
Wend

aRuolo = collRuolo(cmbRuolo.Text)
strSQL = "INSERT Into Staff (Nome,Cognome,Alias,ID_Ruolo) VALUES ('" & iNome & "','" & iCognome & "','" & iAlias & "','" & aRuolo & "')"


DoEvents
dbConn.Execute strSQL


MsgBox ("Dati inseriti")
dbConn.Close
Set dbConn = Nothing
End If

End Sub

riky78
16-07-2002, 09:43
io metterei un altro if prima del MsgBox "Inserisci Alias":


if aRes=true
if iAlias="" then
msgbox "inserisci alias"
else
'qui non ho capito se devi vuoi fare un update o in insert, cmq
strSQL="update staff sett alias=" & iAlias & " where ...."
'oppure
strSQL="insert into staf....."
end if
else
.
.

xit
16-07-2002, 10:12
Così funziona, ma è corretto fare così?



g_strConnectionString = "maia"


'Apro una connessione con il database
dbConn.ConnectionString = g_strConnectionString
dbConn.Open
Dim aRes As Boolean
aRes = controlladati(iCognome, iNome, dbConn)
If aRes = True And txtAlias = "" Then
Beep
MsgBox "Inserisci l'ALIAS", vbInformation
Else
dbRec.Open "Ruolo", dbConn, adOpenForwardOnly, adLockOptimistic, -1
While Not dbRec.EOF
Ruolo = dbRec("Ruolo")
'cmbRuolo.AddItem ruolo
Dim collRuolo As New Collection
collRuolo.Add Int(dbRec("ID_Ruolo")), Ruolo
dbRec.MoveNext
Wend
aRuolo = collRuolo(cmbRuolo.Text)
strSQL = "INSERT Into Staff (Nome,Cognome,Alias,ID_Ruolo) VALUES ('" & iNome & "','" & iCognome & "','" & iAlias & "','" & aRuolo & "')"
DoEvents
dbConn.Execute strSQL
MsgBox ("Dati inseriti")
dbRec.Close
Set dbRec = Nothing
Exit Sub
End If

riky78
16-07-2002, 10:17
si, l'unico problema è che se inserisci dei dati nuovi che non sono nel db e riempi anche txtAlias ti inserisce anche quello, devi vedere se è quello che vuoi...

xit
16-07-2002, 10:27
No, voglio inserire l'ALIAS solo se nome e cognome sono uguali

riky78
16-07-2002, 10:28
allora usa il codie che ti ho postato prima.... non ho ancora capito se vuoi fare un insetert ho un update, comunque li ci sono tutti e due

xit
16-07-2002, 10:45
Voglio fare una insert.Non mi funziona


If aRes = True Then
If txtAlias = "" Then
Beep
MsgBox "Inserisci l'ALIAS", vbInformation
Else
dbRec.Open "Ruolo", dbConn, adOpenForwardOnly, adLockOptimistic, -1
While Not dbRec.EOF
Ruolo = dbRec("Ruolo")
'cmbRuolo.AddItem ruolo
Dim collRuolo As New Collection
collRuolo.Add Int(dbRec("ID_Ruolo")), Ruolo
dbRec.MoveNext
Wend
aRuolo = collRuolo(cmbRuolo.Text)
strSQL = "INSERT Into Staff (Nome,Cognome,Alias,ID_Ruolo) VALUES ('" & iNome & "','" & iCognome & "','" & iAlias & "','" & aRuolo & "')"
DoEvents
dbConn.Execute strSQL
MsgBox ("Dati inseriti")
dbRec.Close
Set dbRec = Nothing
End If
Else
txtAlias.Enabled = True
Dim dbrec1 As New ADODB.Recordset
dbrec1.Open "Ruolo", dbConn, adOpenForwardOnly, adLockOptimistic, -1
While Not dbrec1.EOF
Ruolo1 = dbrec1("Ruolo")
'cmbRuolo.AddItem ruolo
Dim collRuolo1 As New Collection
collRuolo1.Add Int(dbrec1("ID_Ruolo")), Ruolo1
dbrec1.MoveNext
Wend
aRuolo1 = collRuolo1(cmbRuolo.Text)
strSQL1 = "INSERT Into Staff (Nome,Cognome,Alias,ID_Ruolo) VALUES ('" & iNome & "','" & iCognome & "','" & iAlias & "','" & aRuolo & "')"
DoEvents
dbConn.Execute strSQL1
MsgBox ("Dati inseriti")
dbrec1.Close
Set dbrec1 = Nothing
End If

xit
16-07-2002, 10:50
Cioè mi spiego meglio: se nome e cognome sono uguali(cioè già presenti nel db),mi dice inserisci l'Alias,me lo rende attiva la txt, lo inserisco e mi va a salvare i dati.Se non trova nome e cognome nel
db mi va a salvare i dati e la txt ALIAS rimane enabled=false

riky78
16-07-2002, 10:51
così il codice è un po' incasinato:
ad esempio:

While Not dbRec.EOF
Ruolo = dbRec("Ruolo")
'cmbRuolo.AddItem ruolo
Dim collRuolo As New Collection
collRuolo.Add Int(dbRec("ID_Ruolo")), Ruolo
dbRec.MoveNext
Wend
aRuolo = collRuolo(cmbRuolo.Text)

questo lo usi per avere l'id del ruolo selezionato nella combo? se si ti conviene usare ItemData quando riempi la combo per metterci dentro l'ID.

poi ti da un errore o non fuziona la logica?

riky78
16-07-2002, 10:52
Cioè mi spiego meglio: se nome e cognome sono uguali(cioè già presenti nel db),mi dice inserisci l'Alias,me lo rende attiva la txt, lo inserisco e mi va a salvare i dati.Se non trova nome e cognome nel
db mi va a salvare i dati e la txt ALIAS rimane enabled=false


non è quello che volevi?

Loading