Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [VB.NET - ADO.NET] - Dataset con un solo record

    Ciao ragazzi io di solito dopo aver eseguito il FILL da DataAdpter al mio Dataset uso un ciclo su ogni riga per ottenere i dati.

    Una domanda...quando so già che il DS ha solo un record come faccio a dichiarare la datarow?

    Vi pongo l'esempio:

    codice:
    dim sql as string="SELECT * FROM miaTabella WHERE codiceFiscale='" & mioCF.text & "'"
            dim da as new Oledb.OledbDataAdapter(sql,miaConnessione)
            da.MissingSchemaAction = MissingSchemaAction.AddWithKey
            Dim ds As New DataSet
            da.Fill(ds, "anagrafica")
            da = Nothing
    Tenete conto che con una cosa del genere non posso usare il metodo rows.find perchè il campo "codice fiscale" non è una chiave primaria (associata a un campo contatore chiamato ID).

    Ps: il DB è access 2003!

    Spero si sia chiarito qual'è la mia perplessità!
    Grazie a tutti! :P

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Non è molto chiaro il problema, nel senso che non vedo necessità di modificare la logica se il record è zero, uno o più, a meno che tu non debba fare qualcosa di particolare o diverso, e quindi devi spiegare di cosa si tratta.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    No chiaro era per snellire un po il codice e cmq perchè usando il ciclo FOR dovrei cmq dichiarare il DataRow in questo modo:

    codice:
    dim mioR as dataRow
              for each riga as dataRow in myDS.table("miaTab").rows
                         mioR=riga
               next
    Posto che così facendo mi segnala giustamente la possibilità di eccezioni sulla variabile mioR (perchè nel caso fosse 0 il rows.count la variabile resterebbe non valorizzata, mi sembrava un po "laboriosa" come cosa!

    Di fatto non ho necessità! Volevo giusta sapere se esisteva qualche funzione o metodo che nei casi in cui il record sia uno solo me lo pigli subito (quella SELECT per esempio può dare solo 0 o 1 come rows.count).

    una cosa tipo:
    codice:
    'dopo il fill del dataadapter
          dim mioR as dataRow=ds.table("miaTab").row.getFirst()
    Spero di essermi spiegata un po meglio è una "sottigliezza" sto dubbio :P

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    comunque la rottura è che anche usando:
    codice:
    dim mioR as dataRow
              for each riga as dataRow in myDS.table("miaTab").rows
                         mioR=riga
               next
    Mi segnala sempre che:

    "La variabile 'mioR' viene utilizzata prima che le sia stato assegnato un valore. È possibile che venga restituita un'eccezione dovuta a un riferimento con valore null in fase di esecuzione."


    Lascio così cmq?

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ma non si può risolvere così?

    if myDS.table("miaTab").rows <> 1 then Throw New Exception(....
    dim mioR as dataRow = myDS.table("miaTab").rows(0)

    Pietro

  6. #6
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Grande! Ho eliminato il ciclo for e ho usato:

    codice:
     Dim mioR As DataRow = myDs.Tables("miaTab").Rows(0)

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.