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

    passaggio di dati da una form all'altra

    Ragazzi,
    ho un piccolo problema in vb.net e vi spiego:

    come posso trasferire dei dati a una form ad un'altra?
    Ovviamente i dati si trovano su una 1 form 2 scegliendoli devono apparire nei campi della 2 form.

    Ciao e grazie

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    ci sono tanti modi:

    se ti serve passarli appena carichi il form 2 puoi modificare il costruttore di questo (la Sub New che trovi nel codice generato in automatico) e modificare la sua firma (per es. da Sub New a Sub New( ByVal Param1 as Tipo, Param2 as Tipo....) etc etc )

    oppure puoi creare delle proprietà di tipo public e nel form 1 fai:
    Dim myFrm as new Form2
    myFrm.Proprietà1 = ....

    oppure ti dichiari delle variabili di tipo public e sempre creando un oggetto di tipo form nel form che deve passare i valori fai myFrm.NomeVariabile =....



  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    29

    [vb .net] passaggio di dati

    ciao, ho letto i vostri messaggi, scusate se mi intrometto ma ho un problema simile e vorrei avere un vostro consiglio.
    ho un form1 dove effettuo delle ricerce, posso trovare ho un record o nessun record. nel caso trovi un record posso andare in form2 e modificare i dati o posso eliminare da form1 il record trovato.
    se non trovo dati posso andare in form2 e inserire.
    Cosa mi consigliate di fare. in Form1 pensavo di utilizzare dei datacommand e nel caso abbia trovato un record e il mio utente decide di andare a modificare inserisco il seguente codice nel pulsante modifica di form1
    dim frm2 as new form2
    form2.txtvalore="dddd"
    etc...
    se invece voglio inserire un nuovo record richiamo semplicemente frm2 e in fase di salvataggio creo un dataset per verificare se ci sono i dati che ho inserito se non ci sono (ho un campo codice univoco quindi la ricerca è piuttosto semplice...) inserisco...
    è corretta la mia logica?
    vi ringrazio anticipatamente...
    ciao e buon lavoro a tutti
    Giu

  4. #4
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    si vipe, puoi fare in quel modo, però devi dichiarare le variabili in Form2 come PUBLIC

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    29

    passaggio di dati

    Ciao, prima di tutto grazie mille per la tua risposta...
    sono all'inizio della programmazione con vb .NET e diciamo che non riesco a muovermi bene.
    Approfitto della tua gentilezza per chiederti ancora una cosa... se nella form iniziale di un progetto ho un valore che devo avere disponibile per tutte le form come posso fare? L'unica cosa che mi è venuta in mente è creare un modulo e dichiarare la variabile Public (come facevo in vb6...).
    Inoltre volevo sapere, riguardo all'esempio di prima (form1 e form2) io ho creato in form2 due combo che si popolano con dati non modificabili dall'utente, la prima combo la popolo nel form2_load mentre la seconda la devo popolare in base alla scelta fatta dall'utente nella combo 1. Premetto che ho usato i datareader per popolare ma mi succede una cosa strana, il codice inserito nell'evento SelectedIndexChanged di combo1 per popolare combo 2:
    - viene eseguito n volte quando popolo combo1
    - quando scelgo una nuova voce in combo1 prima combo2 si popola correttamente poi si popola con se seguenti voci
    system.data.datarowview mentre se inserisco il codice in un pulsante funziona tutto....
    Tu sai il motivo?
    grazie ancora

    Giu

  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212

    Re: passaggio di dati

    Originariamente inviato da vipe
    Ciao, prima di tutto grazie mille per la tua risposta...
    sono all'inizio della programmazione con vb .NET e diciamo che non riesco a muovermi bene.
    Approfitto della tua gentilezza per chiederti ancora una cosa... se nella form iniziale di un progetto ho un valore che devo avere disponibile per tutte le form come posso fare? L'unica cosa che mi è venuta in mente è creare un modulo e dichiarare la variabile Public (come facevo in vb6...).
    Per "vedere" una variabile presente nel form1 potresti dichiararla come SHARED in modo tale da poterla usare, per esempio in un form2, facendo semplicemente:

    Form1.MiaVariabile

    se form1 si trova in un progetto diverso da quello in cui si trova la form2 per vedere la variabile dovresti inserire in form2 il riferimento al progetto che contiene form1

    Altra soluzione potresti crearti una proprietà Public Shared (readonlyo meno, a seconda se ti serve modificare il valore della variabile in form1) da usare quando ti serve.

    Inoltre volevo sapere, riguardo all'esempio di prima (form1 e form2) io ho creato in form2 due combo che si popolano con dati non modificabili dall'utente, la prima combo la popolo nel form2_load mentre la seconda la devo popolare in base alla scelta fatta dall'utente nella combo 1. Premetto che ho usato i datareader per popolare ma mi succede una cosa strana, il codice inserito nell'evento SelectedIndexChanged di combo1 per popolare combo 2:
    - viene eseguito n volte quando popolo combo1
    - quando scelgo una nuova voce in combo1 prima combo2 si popola correttamente poi si popola con se seguenti voci
    system.data.datarowview mentre se inserisco il codice in un pulsante funziona tutto....
    Tu sai il motivo?
    grazie ancora
    il problema nasce perchè ad ogni item inserito nella combo, questo viene selezionato come item corrente, quindi se inserisci 10 item ti scata l'evento 10 volte. Prova ad usare i metodi BeginUpdate e EndUpdate per vedere se riesci a risolvere

    MiaCombo.BeginUpdate
    'AggiungiItem
    MiaCombo.EndUpdate

    Il fatto che ti visualizzi system.data.datarowview potrebbe dipendere da come hai settato le proprietà DisplayMember. Oppure potrebbe essere un poblema di lettura dei campi del datasource settato.

    eventualmente posta qualche stralcio di codice che lo vediamo insieme

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    29
    Ti posto il mio codice

    Private Sub DefinizioneEnte_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim DaTipiEnti As New SqlDataAdapter("SELECT * FROM TAB_TIPI_ENTI", StartUpSqlConnection)
    Dim DsTipiEnti As New DataSet()

    DaTipiEnti.Fill(DsTipiEnti, "TAB_TIPI_ENTI")

    combo1.DataSource = DsTipiEnti.Tables("TAB_TIPI_ENTI")
    combo1.DisplayMember = "DESCRIZIONE"

    StartUpSqlConnection.Close()

    End Sub

    L'unico modo per non far eseguire n volte questo codice è inserirlo nel pulsante di form1 che chiama form2. In questo modo mi popola correttamente anche la combo2 senza inserire system.data.datarowview come dicitura. Senti scusa se ne approfitto ma non trovo niente ne sui libri in mio possesso nè sull'help-on-line...
    - ho provato ad usare combo1.ValueMember.... ma da errore... si può usare come proprietà?

    nella combo2.SelectedIndexChanged ho inserito il seguente codice

    Private Sub combo2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles combo2.SelectedIndexChanged
    Dim StringaCodEnte As String

    StringaCodEnte = "SELECT COD_ENTE AS CODENTE FROM(FINANZE_Enti_Creditori_Beneficiari)"
    StringaCodEnte = StringaCodEnte & " WHERE(DENOMINAZIONE = N'" & CmbEnti.Text & "')"

    Dim CmdCodEnte As New SqlCommand(StringaCodEnte, StartUpSqlConnection)

    Dim CodEnte As String

    CodEnte = CmdCodEnte.ExecuteScalar()
    StartUpSqlConnection.Close()

    If CodEnte = "" Then
    TxtCodEnte.Text = CodEnte
    Else
    MsgBox("Attenzione!")
    End If

    End Sub

    ma fa delle cose assure... del tipo esegue il codice fino a ...ExecuteScalar poi torna su a Dim CmdCodEnte As New SqlCommand.... esegue fino all'assegnazione di TxtCodEnte.text=... e poi salta nella routine di combo2.SelectedIndexChanged....
    Scusa se ti rompo ma non riesco proprio a far funzionare niente... tu sai dei siti dove viene spiegato bene ADO .NET?
    Grazie di tutto
    Giu

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.