Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    18

    Update record su sql con visual basic 2010 express

    Salve, a tutti...
    Sono Salvatore... un new entry nel mondo del visual basic con 2 libroni che mi sono letto per imparare.
    Ho un piccolo problema e conto nel vostro aiuto.
    Sto usando il visual basic 2010 express (penso che sia il più adatto per imparare perchè fa tutto da solo )
    Sto creando una piccola agenda con sql che mi permette di inserire nuovi contatti, aggiornare e cancellare i dati.... niente di più semplice mi direte!
    In effetti l'unico problema ce l'ho per la modifica dei dati.
    Allora...considerando che ho:


    Private Sub ClientiBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Handles ClientiBindingNavigatorSaveItem.Click

    If RagioneSocialeTextBox.Text = "" Then MsgBox("La casella 'Ragione Sociale' non può essere vuota.", MsgBoxStyle.OkOnly + MsgBoxStyle.Critical)

    Exit Sub

    End If

    ClientiBindingNavigatorSaveItem.Enabled = False
    Me.Validate()
    Me.ClientiBindingSource.EndEdit()
    Me.TableAdapterManager.UpdateAll(Me.SchedaClientiD ataSet)

    End Sub


    Con questo mi dice che:
    non posso modificare il record "ID" perchè è una chiave primaria non modificabile ed autoincrementante.

    Se voglio fare l'UPDATE tramite la query generata direttamente da SQL con la configurazione automatica, ho la query:
    UPDATE Clienti SET RagioneSociale = @p2, Indirizzo = @p3, Cap = @p4, Citta = @p5, Provincia = @p6, PartitaIVA = @p7, TelUfficio = @p8, Fax = @p9, Cellulare1 = @p10, Cellulare2 = @p11, RagSocialeDest = @p12, IndirizzoDest = @p13, CapDest = @p14, CittaDest = @p15, ProvinciaDest = @p16 WHERE (IDClienti = non so più cosa mettere!!!)

    e sul pulsante salva ho questa riga:
    FrmPrincipale.ClientiTableAdapter.UpdateClienti(Ra gioneSocialeTextBox.Text, IndirizzoTextBox.Text, CapTextBox.Text, CittaTextBox.Text, ProvinciaTextBox.Text, PartitaIVATextBox.Text, TelUfficioTextBox.Text, FaxTextBox.Text, Cellulare1TextBox.Text, Cellulare2TextBox.Text, RagSocialeDestTextBox.Text, IndirizzoDestTextBox.Text, CapDestTextBox.Text, CittaDestTextBox.Text, ProvinciaDestTextBox.Text)

    Considerando che l'ID mi viene visualizzato in label per non farlo modificare manualmente e,
    considerando che le proprietà di questo label sono:
    TabIndex = 17 (che dovrebbe prendere il posto di @p17)
    Name= IDClientiLabel1 (che ho provato a mettere su WHERE (IDClienti = @IDClientiLabel1)

    Mi da il seguente errore:
    Errore 1 Argomento non specificato per il parametro '_17' di 'Public Overridable Overloads Function UpdateClienti(p2 As String, p3 As String, p4 As Long, p5 As String, p6 As String, p7 As String, p8 As String, p9 As String, p10 As String, p11 As String, p12 As String, p13 As String, p14 As Long?, p15 As String, p16 As String, _17 As Integer) As Integer'. C:\Users\Zorech\documents\visual studio 2010\Projects\Gestione Magazzino\Gestione Magazzino\FrmModifica.vb 20 9 Gestione Magazzino

    Come faccio a modificare il record che mi viene visualizzato nel form specificando che l'ID giusto è quello che figura nel form in formato label?
    Purtroppo l'ID mi è indispensabile così e non so come assegnare ad unaltra variabile il campo ID.

  2. #2
    hm non ho mai programmato con VB ed alcune parti del codice mi sembrano per questo motivo oscure, però se ho capito il tuo problema devi solo prendere dal tuo label il valore visualizzato (da quello che hai scritto sembra che il valore visualizzato nel label è sempre il valore di ID della row sulla quale fare l'update) ed inserirlo nella query dove c'è scritto "WHERE ID= ".
    Hai settato il database in modo tale che il campo ID sia unico, autoincrementale e non modificabile: quindi non devi cercare di modificarlo (a meno che non cambi la query create table).

    EDIT

    dall'ultimo errore che hai scritto sembrerebbe che tu non gli stia passando il campo id come un intero (come dovrebbe essere).

    Comunque lascio la parola a chi conosce questo ambiente di sviluppo

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    18
    Ciao MegaAlchimista,

    Originariamente inviato da MegaAlchimista
    il tuo problema devi solo prendere dal tuo label il valore visualizzato (da quello che hai scritto sembra che il valore visualizzato nel label è sempre il valore di ID della row sulla quale fare l'update) ed inserirlo nella query dove c'è scritto "WHERE ID= ".
    Hai settato il database in modo tale che il campo ID sia unico, autoincrementale e non modificabile: quindi non devi cercare di modificarlo (a meno che non cambi la query create table).
    Hai perfettamente centrato il problema!!! Nella label con nome "IDClientiLabel1" mi viene indicato il valore ID della row ma non riesco ad inserirlo nella query sotto "WHERE IDClienti="
    per poter effettuare la Query al record giusto.

    Originariamente inviato da MegaAlchimista
    Errore 1 Argomento non specificato per il parametro '_17' di 'Public Overridable Overloads Function UpdateClienti(p2 As String, p3 As String, p4 As Long, p5 As String, p6 As String, p7 As String, p8 As String, p9 As String, p10 As String, p11 As String, p12 As String, p13 As String, p14 As Long?, p15 As String, p16 As String, _17 As Integer) As Integer'. C:\Users\Zorech\documents\visual studio 2010\Projects\Gestione Magazzino\Gestione Magazzino\FrmModifica.vb 20 9 Gestione Magazzino
    In quest'ultimo errore ho assegnato alla "WHERE IDClienti = @p17" il TabIndex 17 che il VB automaticamente ha riconosciuto come INTEGER associandolo all'ID come tutti gli altri valori che vedi nell'errore.
    E non capisco.... perchè gli altri valori vanno bene ed il @p17 non lo riconosce come postazione che poi riconosce come Integer?
    Non sono riuscito a dormirci sopra cavolo!! ahahahah

  4. #4
    Il tuo ragionamento è esatto, quindi credo che l'errore sia sintattico.
    Così su due piedi
    "argomento non specificato per il parametro '_17'"
    mi fa pensare che ci sia qualche errore nel codice per il quale il compilatore non capisce che cosa assegnare al campo 17.
    Scusa ma è una cosa specifica del linguaggio, che come ti ho detto, non conosco, quindi lascio la parola a chi ha tutti i mezzi per capire cosa stia succedendo

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    18
    ho bisogno di aiuto pleaseeeeeeeeeee...
    Non riesco a trovare la soluzione

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

    Moderazione

    C'è una sezione apposita dedicata a Visual Basic.
    Sposto la discussione.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da zorech
    ho bisogno di aiuto pleaseeeeeeeeeee...
    Non riesco a trovare la soluzione
    Mi sa che ti stai perdendo in un bicchiere d'acqua...

    Prima hai scritto:
    Originariamente inviato da zorech
    .... WHERE (IDClienti = non so più cosa mettere!!!)

    Poi hai scritto:
    Originariamente inviato da zorech
    Considerando che l'ID mi viene visualizzato in label per non farlo modificare manualmente e,
    considerando che le proprietà di questo label sono:
    TabIndex = 17 (che dovrebbe prendere il posto di @p17)
    Name= IDClientiLabel1 (che ho provato a mettere su WHERE (IDClienti = @IDClientiLabel1)
    1) Cosa c'entri TabIndex è davvero un mistero...
    2) Cosa c'entri Name= IDClientiLabel1 è un'altro mistero...

    Alla WHERE devi passare direttamente l'ID, che corrisponde al valore della label:

    codice:
    "UPDATE  Clienti SET ...bla/bla/bla... WHERE IDClienti = " & IDClientiLabel1.Text

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    18
    Originariamente inviato da gibra
    1) Cosa c'entri TabIndex è davvero un mistero...
    2) Cosa c'entri Name= IDClientiLabel1 è un'altro mistero...

    Alla WHERE devi passare direttamente l'ID, che corrisponde al valore della label:

    codice:
    "UPDATE  Clienti SET ...bla/bla/bla... WHERE IDClienti = " & IDClientiLabel1.Text
    TabIndex è la postazione che dai alla variabile che serve quando crei la query con visual Basic 2010 express ....Visto che VB non sa quale variabili andranno messe, crea delle postazioni @p1, @p2,@p3...ecc... che le va a trovare nelle proprietà TabIndex.

    Name=IDClientiLabel1 volevo indicare che l'ID viene visualizzato in un Label e che si chiama IDClientiLabel1.

    Per il resto ho provato già prima per come mi hai descritto tu ma mi dava errore che non potevo mettere una stringa in un valore integer....o qualcosa del genere.
    Cmq ci deve essere qualche piccolissima sciocchezza perchè ho rifatto lo stesso progetto con la tabella dei fornitori e l'update con Me.TableAdapterManager.UpdateAll(Me.SchedaClientiD ataSet) me lo fa tranquillamente senza problemi anche se L'ID è sempre un Identity.
    boooooooo?!?!?!? ora rifaccio il progetto clienti e poi vediamo.....perchè l'errore non riesco a trovarlo e l'avro sotto gli occhi!

  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da zorech
    TabIndex è la postazione che dai alla variabile che serve quando crei la query con visual Basic 2010 express ....Visto che VB non sa quale variabili andranno messe, crea delle postazioni @p1, @p2,@p3...ecc... che le va a trovare nelle proprietà TabIndex.
    Questa mi è nuova, non lo sapevo, forse perchè io non uso nessun wizard...

    Originariamente inviato da zorech
    Per il resto ho provato già prima per come mi hai descritto tu ma mi dava errore che non potevo mettere una stringa in un valore integer....o qualcosa del genere.
    Se non mostri esattamente il codice che hai usato, non possiamo aiutarti.
    Giusto?

  10. #10
    Utente di HTML.it L'avatar di Typo
    Registrato dal
    Apr 2012
    Messaggi
    89
    So che vado OT ma vorrei darti un consiglio. Lascia perdere il Wizard di Visual Studio che è ( secondo il mio parere ) più adatto a professionisti che necessitano di produttività, che a persone che hanno ancora bisogno di imparare ( purtroppo tutti i libroni da 90 80 100 € almeno quelli della Hoepli che ho acquistato io, non parlano mai di questi argomenti, ma vanno tutti a finire sul wizard. )

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 © 2026 vBulletin Solutions, Inc. All rights reserved.