Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Record attivo dopo istruzione SQL "INSERT"

    Salve, sto faticosamente passando da VB6 a VB.NET, e mi sorge questo problema:

    Devo inserire un nuovo record in una tabella ed eseguo correttamente l'istruzione SQL "INSERT" tramite commandObject (cmd.ExecuteNonQuery()), dato che il primo campo della tabella, di nome "id" è un contatore, il suo valore viene assegnato automaticamente, avrei bisogno di sapere questo valore per effettuare altre operazioni, in VB6 una volta inserito un record esso era quello attivo e tramite RecordSet andavo a leggere l'id ma ora come faccio?

    Grazie mille...
    zoodany..

    www.zoodany.it

  2. #2
    Ciao,
    anche io sto passando a VB.net e il passaggio anche a me risulta faticoso. E pensare che quelli che della Microsoft avevano detto che con Vb.net le cose erano più facili perchè bisognava inserire meno codice.
    Passando alla tua domanda, io lo stesso problema lo ho risolto usando il tipo datarow e il metodo Newrow relativo alla tua Datatable.
    Allenati a ricercare sulla MSDN e compra un buon libro: Parlano molto bene di "Programmare Microsoft Visual Basic 2005. Il linguaggio e il framework" di F. Balena. (che io non ho ancora comprato).
    Giorgio
    L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, e poi ti spiega la lezione. (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, vedi qui: http://forum.html.it/forum/showthrea...ight=contatore
    anche se il thread era per vb6, le istruzioni sql vanno bene per tutti...
    Jupy

  4. #4
    Originariamente inviato da Jupy64
    Ciao, vedi qui: http://forum.html.it/forum/showthrea...ight=contatore
    anche se il thread era per vb6, le istruzioni sql vanno bene per tutti...
    Ho provato a scrivere questo:

    codice:
    dim i as integer
    sql = "SELECT @@IDENTITY FROM fotoimm"
    cmd.CommandText = sql
    i = cmd.ExecuteNonQuery()
    ma su i non mi viene restituito nulla... Dove sbaglio?

    Grazie!!
    zoodany..

    www.zoodany.it

  5. #5
    Originariamente inviato da zoodany
    Ho provato a scrivere questo:

    codice:
    dim i as integer
    sql = "SELECT @@IDENTITY FROM fotoimm"
    cmd.CommandText = sql
    i = cmd.ExecuteNonQuery()
    ma su i non mi viene restituito nulla... Dove sbaglio?

    Grazie!!
    cmd.commandtext = sql.tostring

    una cosa : hai dichiarato cmd??

  6. #6
    Certo che cmd è dichiarato...

    Per ora ho risolto così ma non mi sembra ne elegante, ne efficiente..

    codice:
    dim id as integer
    sql = "SELECT TOP 1 id FROM fotoimm ORDER BY id DESC"
    cmd.CommandText = sql
    dr = cmd.ExecuteReader
    dr.Read()
    id = dr!id
    dr.Close()
    Il mio VB è l'edizione 2005, può essere che le vostre soluzioni funzionino solo con versioni precedenti? :master:
    zoodany..

    www.zoodany.it

  7. #7
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Originariamente inviato da zoodany
    Ho provato a scrivere questo:

    codice:
    dim i as integer
    sql = "SELECT @@IDENTITY FROM fotoimm"
    cmd.CommandText = sql
    i = cmd.ExecuteNonQuery()
    ma su i non mi viene restituito nulla... Dove sbaglio?

    Grazie!!
    Ciao, non devi usare cmd.ExecuteNonQuery() in quanto l'interrogazione ti deve restituire qualcosa...l'ID
    Pertanto usa ExecuteReader..
    Jupy

  8. #8
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    Ecco un classico esempio connessione ado.net per lettura dati con datareader:

    codice:
    dim x
    							' ADO.NET
    
    'Percorso del DataBase (Biblio.mdb)
    Dim PercorsoDB As String = "...."
    'Stringa di Connessione
    Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    			"Data Source=" & PercorsoDB
    
    Dim Cn As New OleDbConnection(ConnString)
    
    Dim sql As String = "select * from authors where au_id=?"
    
    Dim cmd As New OleDbCommand(sql, cn)
    
    Dim dr As OleDbDataReader = cmd.ExecuteReader
    
    Do While dr.Read()
    	X = dr(“nome_campo”)
    Loop
    
    Dr.close
    Dr.nothing
    Cn.close
    Cn = nothing
    Se invece devi fare una insert, delete o update

    codice:
    					
    
    		'ADO.NET
    
    'Percorso del DataBase (Biblio.mdb)
    Dim PercorsoDB As String = "...."
    'Stringa di Connessione
    Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    			"Data Source=" & PercorsoDB
    
    Dim Cn As New OleDbConnection(ConnString)
    
    Dim sql As String = "select * from authors where au_id=?"
    
    Dim cmd As New OleDbCommand(sql, cn)
    
    Dim int_numeroRighe As integer = ExecuteNonQuery
    ' oppure semplimente: executeNonquery
    
    if int_numeroRighe > 0 then
    	messagebox.show("Eseguito")
    end if
    
    Cn.close
    Cn = nothing
    la variabile integer da me creata conterrà il numero di righe totali
    che la query ha eseguito
    Tony

  9. #9
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    poi non sò era questo che intedevi fare:

    http://www.aspitalia.com/script/588/...uteScalar.aspx

    Vedi su google ExecuteScalar
    Tony

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.