Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    111

    [VB.NET] Campo contatore

    Ho creato un piccolo database, funziona tutto correttamente eccetto...
    Siccome è disconnesso, al momento in cui creo un nuovo record, non riesco a visualizzare il il nuovo ID nel campo contatore.
    Come posso fare a visualizzarlo?
    (Non rispondetemi incrementando di 1 il valore del record precedente da codice manuale, perchè se altre persone hanno nel frattempo creato nuovi record nella stessa tabella, mi trovo degli ID duplicati...)

  2. #2
    devi gestire in locale senza usare gli ID, ecco perchè un Software che ho realizzato multiclient lho fatto totalmente in linea... certo ci saranno altri problemi, ma sicuramente non quello di dover gestire duplicati nel momento in cui faccio la sincronizzazione e simili...
    I database... la mia passione + o -

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Re: [VB.NET] Campo contatore

    Originariamente inviato da Stibbert
    Ho creato un piccolo database, funziona tutto correttamente eccetto...
    Siccome è disconnesso, al momento in cui creo un nuovo record, non riesco a visualizzare il il nuovo ID nel campo contatore.
    La soluzione ideale è quella di generare lato applicazione il valore dell'ID e "allegarlo" al record prima del salvataggio sul DB; l'ID dovrebbe essere generato (o prelevato) da uno storage in grado di garantire la "consistenza" del DB in ambito multiutenza, se necessario.

    In questo modo, l'applicazione è già in possesso dell'ID che le consente di ottenere i valori dei campi del record appena memorizzato.

    Ovviamente, il campo non dovrà essere di tipo "Contatore", visto che va impostato direttamente dall'applicazione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    111
    Grazie a tutti e due...
    forse mi sono spìegato male.
    Mi basterebbe riuscire a rileggere, una volta salvato il record, il valore che viene assegnato a questo dal campo contatore.
    Provvisoriamente faccio così:
    Creo il record, inserisco i dati, lo salvo nel database, poi rifaccio da.fill(ds) e ricarico i dati dal database.
    Questo sistema funziona, ma ha il difetto di essere lento...
    Non sono ancora così bravo da riuscire a gestire uno storage, mi basterebbe riuscire a trovare un metodo più veloce di quello che uso adesso.

  5. #5
    ma che database usi?
    I database... la mia passione + o -

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Stibbert
    Mi basterebbe riuscire a rileggere, una volta salvato il record, il valore che viene assegnato a questo dal campo contatore.
    Non puoi rileggere con un sistema basato su query un valore, specialmente se è un valore chiave, perché ti servirebbe un'altra chiave per ottenerlo.

    Tutti i sistemi sono rischiosi.

    Originariamente inviato da Stibbert
    Provvisoriamente faccio così:
    Creo il record, inserisco i dati, lo salvo nel database, poi rifaccio da.fill(ds) e ricarico i dati dal database.
    Questo sistema funziona, ma ha il difetto di essere lento...
    Per forza: ad ogni aggiornamento, esegui due query al posto di una.

    Originariamente inviato da Stibbert
    Non sono ancora così bravo da riuscire a gestire uno storage, mi basterebbe riuscire a trovare un metodo più veloce di quello che uso adesso.
    Cos'aveva quello che ti ho suggerito io di sbagliato? :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    111
    Per PowerMobile: Uso Access (Jet).
    Per Alka: Non ho niente contro la tua soluzione, immagino che uno storage sia (una variabile, un array?) dal quale prelevare l'ID, e che viene riempito con il progressivo seguente appena assegnato il numero...
    Con VB6 non avrei problemi a farlo, ma con .Net sono ancora all'inizio (comunque può essere una buona idea).
    Dal momento che siete molto più bravi di me, vi allego un link che ho trovato, sembra un po' complesso, ma voi dovreste essere in grado di sfruttarlo...

    http://msdn2.microsoft.com/en-us/library/ks9f57t0.aspx

    Per PowerMobile: l'idea di non usare l'ID non mi piace. Nel caso di Combo o Listbox non si può usare il campo ID per trovare il record... secondo me il campo ci deve essere, ma non visibile.

  8. #8
    per carità magari lo sapete tutti alla grande l'inglese
    http://msdn2.microsoft.com/it-it/lib...t0(VS.80).aspx

    in italiano però credo si capisca + ...

  9. #9
    Per PowerMobile: l'idea di non usare l'ID non mi piace. Nel caso di Combo o Listbox non si può usare il campo ID per trovare il record... secondo me il campo ci deve essere, ma non visibile.
    io non volevo dire di non usare l'ID ma che nel salvataggio di usare un altro sistema come quello che ti diceva Alka... poi sarà il db ad assegnarne uno nel momento del salvataggio...
    I database... la mia passione + o -

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    111
    AIUTOOO!
    Ho provato a seguire le istruzioni del link NSDN, ma non funziona niente.
    Mi sapete dire cosa ho sbagliato?
    Ho scritto nel pulsante Nuovo Record:

    'Riapro la connessione
    con.Open()

    'Aggiungo il nuovo record alla table
    ds.Tables("Table").NewRow()
    ds.Tables("Table").Rows.Add()

    'Aggiorno il db con le modifiche
    Dim cb As New OleDb.OleDbCommandBuilder(da)
    da.Update(ds, "Table")

    'DA QUI C'E' IL CODICE DEL LINK
    Dim newID As Integer = 0
    Dim idCMD As OleDb.OleDbCommand = New OleDb.OleDbCommand("SELECT @@IDENTITY", con)
    newID = CInt(idCMD.ExecuteScalar())

    'Qui dovrei vedere il nuovo ID appena generato... invece appare 0
    MsgBox(newID)

    Mi sapete anche dire come si inserisce il codice nel riquadro apposito?

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.