PDA

Visualizza la versione completa : VB Questo codice è corretto


xit
05-06-2002, 09:59
Private Sub cmdInvia_Click()
If txtCognome = "" Or txtNome = "" Then
MsgBox "Inserisci i campi obblibatori * mancanti", vbInformation
Else
DimiCognome , iNome
iCognome = txtCognome
iNome = txtNome
Dim Cnn As ADODB.Connection
Dim Rst As ADODB.Recordset
Set Cnn = New Connection
Set Rst = New Recordset
Cnn.Open "Provider=............."
Set Rst = Cnn.Execute("Select ........... From nomeTabella ...")
Do While Not Rst.EOF
If CampoNome = iNome And CampoCognome = iCognome Then
MsgBox ("Nomi e cognome già presenti")
Else
Rst.AddNew
Rst("Nome")="txtNome.text
Rst("Cognome")="txtCognome.text
Rst.Update
Rst.MoveNext
Loop
Set Rst = Nothing
Set Cnn = Nothing
Exit Sub
End If
End If

xit
05-06-2002, 11:21
Qualcuno può dirmi se questo codice è corretto?

steno12
05-06-2002, 11:44
Private Sub cmdInvia_Click()
If txtCognome = "" Or txtNome = "" Then
MsgBox "Inserisci i campi obblibatori * mancanti", vbInformation
Else
DimiCognome , iNome
iCognome = txtCognome
iNome = txtNome
Dim Cnn As ADODB.Connection
Dim Rst As ADODB.Recordset
Set Cnn = New Connection
Set Rst = New Recordset
Cnn.Open "Provider=............."
Set Rst = Cnn.Execute("Select ........... From nomeTabella ...")
Do While Not Rst.EOF
If CampoNome = iNome And CampoCognome = iCognome Then
MsgBox ("Nomi e cognome già presenti")
Set Rst = Nothing
Set Cnn = Nothing
Exit Sub
Else
Rst.AddNew
Rst("Nome")="txtNome.text
Rst("Cognome")="txtCognome.text
Rst.Update
Rst.MoveNext
Loop
Set Rst = Nothing
Set Cnn = Nothing
End If
End If

Così dovrebbe andare......guarda la differenza
se nome e cognome sono presenti chiudi la connessione ed esci

se tutto è okay registri

Non lo provato, tu devi dire se ti funziona............

xit
05-06-2002, 11:49
Mi dà questo errore
Tipo definito dall'utente non definito
Dim Cnn As ADODB.Connection

ans
05-06-2002, 12:23
Non puoi fare l'addnew poichè il recordset che ti ritorna l'execute è di tipo readonly (sola lettura).

xit
05-06-2002, 12:25
E quindi?

ans
05-06-2002, 12:29
E quindi quel codice non è corretto.

steno12
05-06-2002, 12:49
Crea un nuovo db con un solo campo che nomini Nome, per provare

Metti nel progetto un modulo.bas e incolla questo:
Global g_strConnectionString As String

poi fai così:

Private Sub cmdInvia_Click()
'incolla questo come prima linea del pulsante
g_strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
& App.Path & "\NomeDelTuoDB.mdb; Persist Security Info=False"
'il DB deve stare nella directory del progetto vb
'ora g_strConnection contiene il riferimento alla connessione

Dim dbConnAs New ADODB.Connection
Dim strConnectionString As String
Dim strSQL As String

Dim iNome As String
iNome = txtNome

If txtNome = "" Then
MsgBox "Inserisci i campi obblibatori * mancanti", vbInformation
exit sub
end if



'Apro una connessione con il database
dbConn.ConnectionString = g_strConnectionString
dbConn.Open
Dim bRes As Boolean

bRes = controllanome(iNome, dbConn)
If bRes = True Then
beep
MsgBox ("iNome già presente")
dbConn.Close
Set dbConn = Nothing
else
strSQL = "INSERT INTO Tabella (Nome) VALUES ('" & iNome & "',"')"
'Tabella è il nome della tabella del tuo db
'Nome è il campo
'chiudi la connessione al database
dbConn.Close
Set dbConn = Nothing
endif


Questa è la funzione per verificare se iNome esiste già

Private Function controllanome (ByVal nome1 As String, ByRef dbConn As ADODB.Connection) As Boolean

Dim dbRec As New ADODB.Recordset
Dim strSQL As String

strSQL = "SELECT * FROM Tabella WHERE Nome = '" & nome1 & "'"
DoEvents
Set dbRec = dbConn.Execute(strSQL)
controllanome = Not dbRec.EOF
Set dbRec = Nothing
End Function





prova e fammi sapere.............

link
homepage http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/
forum http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/public/twforum/default.asp

darkblOOd
05-06-2002, 13:19
il problema sta quà:


Originariamente inviato da xit

...
Dim Cnn As ADODB.Connection
Dim Rst As ADODB.Recordset

Set Cnn = New Connection
Set Rst = New Recordset

...


usa:

Dim Cnn As New ADODB.Connection
Dim Rst As New ADODB.Recordset

e togli le due righe successive

imposta anche la proprietà LockType del recordset di tipo Optimistic

poi prima di impostare recordset e connection a Nothing devi chiuderli



:ciauz:

ans
05-06-2002, 13:24
darkblOOd sai quello che dici???


Spiegami perchè è sbagliato:

Dim Cnn As ADODB.Connection
Dim Rst As ADODB.Recordset

Set Cnn = New Connection
Set Rst = New Recordset

dimmi un po'.

Loading