Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    160

    [VB.NET]Scrittura su database Access3

    Cmq non avevo riaperto la discussione per lamentarmi e basta,ma per continuare con la risoluzione dei miei problemi.
    Cerco di essere chiaro.
    Il mio problema è il seguente:
    Io ho un database access che mi serve per memorizzare dei dati dei clienti.
    Quando entro nella form principale c'è un if che controlla se il db è pieno oppure no.
    Se è pieno eseguo il blocco delle istruzioni dell'If, altrimenti esegue il blocco delle istruzioni dell'else. Il problema è che ci sono 2 problemi con la scrittura del codice:
    1: la select per il controllo del contenuto del db è sbagliata e quindi non viene mai eseguito il codice che consente la scrittura del db, anche riempiendo il db manualmente.
    2: non vengono scritti i dati sul db. C'è un problema con la scrittura.
    Adesso ho spiegato chiaramente i miei problemi in dettaglio.

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

    Re: [VB.NET]Scrittura su database Access3

    Originariamente inviato da jonnyx91
    Cmq non avevo riaperto la discussione per lamentarmi e basta,ma per continuare con la risoluzione dei miei problemi.
    Sì, ma non hai aggiunto nulla, a parte le lamentele, quindi è lecito pensare che il motivo fosse solo questo, ad ogni modo...

    Originariamente inviato da jonnyx91
    1: la select per il controllo del contenuto del db è sbagliata e quindi non viene mai eseguito il codice che consente la scrittura del db, anche riempiendo il db manualmente.
    In questo caso, devi riportare (usando il tag CODE con il pulsante "#" nel forum) la parte di codice che verifica se "il database è pieno", poiché - come è già stato detto nella precedente discussione, che non si vorrebbe replicare - occorre definire cosa si intende con "pieno".

    Quindi, puntualmente
    1) definisci cosa intendi per "database pieno";
    2) riporta il codice che verifica questa condizione

    così noi possiamo 1) essere sicuri di ciò che intendi, 2) vedere se il codice fa quello che dici.

    Originariamente inviato da jonnyx91
    2: non vengono scritti i dati sul db. C'è un problema con la scrittura.
    Anche in questo caso, definisci
    1) quali dati (intesi come "campi") vuoi inserire,
    2) da dove li prendi (caselle di testo, ecc.),
    3) il codice che hai scritto per farlo.
    in modo che - analogamente al caso precedente - sia possibile verificare ciò che hai scritto, quello che devi ottenere nello specifico e la validità del codice rispetto allo scopo prestabilito.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    160
    Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim stringa As String

    stringa = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    stringa = stringa & Application.StartupPath & "\" & "Registrazione.mdb;Jet OLEDBatabase Password=;"

    cn = New ADODB.Connection
    rs = New ADODB.Recordset

    cn.Open(stringa)
    rs.Open("SELECT * FROM Dati", cn, 1)

    /* rs.EOF da sempre TRUE anche se la tabella è piena

    If (rs.EOF = True) Then
    Me.Visible = False
    frmAnagrafica.ShowDialog()
    Me.Visible = True

    Else
    Produttore = rs("Produttore").Value
    MsgBox(rs("Produttore").Value)
    Indirizzo = rs("Indirizzo").Value
    Ncivico = rs("Ncivico").Value
    Città = rs("Città").Value
    Cap = rs("Cap").Value
    Provincia = rs("Provincia").Value
    Nazione = rs("Nazione").Value
    Telefono = rs("Telefono").Value
    EMail = rs("Email").Value
    End If

    cn = Nothing
    rs = Nothing

    End Sub

    Per database pieno si intende che contiene il record con i dati anagrafici del cliente, ed è questa l'unica cosa che deve contenere.
    I campi del db sono quelli a destra dell'uguale. A sinistra ci sono le variabili che utilizzo nel programma e sono dichiarate nel modulo così sono visibili in tutte le form.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da jonnyx91
    /* rs.EOF da sempre TRUE anche se la tabella è piena
    La proprietà Eof si usa per capire se - sfogliando il Recordset - ci si trova alla fine dei record disponibili, quindi potrebbe valere True anche quando ci sono dei dati.

    Si dovrebbe verificare se vale True sia la proprietà Bof che Eof: in tal caso, dato che ci si trova sia all'inizio che alla fine del recordset, allora si può dire che la tabella vuota; il solo Eof, in generale, per questa casistica, non è affidabile.

    Originariamente inviato da jonnyx91
    Per database pieno si intende che contiene il record con i dati anagrafici del cliente, ed è questa l'unica cosa che deve contenere.
    Ok. Quindi suppongo che "Dati" sia il nome della tabella con i dati anagrafici dei clienti.

    Originariamente inviato da jonnyx91
    I campi del db sono quelli a destra dell'uguale. A sinistra ci sono le variabili che utilizzo nel programma e sono dichiarate nel modulo così sono visibili in tutte le form.
    Nel codice che hai scritto, come ti è stato già detto, tu stai leggendo un recordset (insieme di record) memorizzando il valore di alcuni campi all'interno di variabili dichiarate nel tuo programma, mentre da quello che ho capito tu devi andare ad aggiornare il record, cioè modificarlo e salvarlo; per quest'ultimo caso, cioè per la scrittura dei dati, hai già steso del codice necessario e hai degli errori, o devi ancora scriverlo?

    Mi associo comunque al suggerimento che ti è stato dato in merito all'abbandonare l'uso di ADO DB in favore delle classi del namespace System.OleDb (fai una ricerca per ulteriori informazioni).

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

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

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da jonnyx91
    Per database pieno si intende che contiene il record con i dati anagrafici del cliente, ed è questa l'unica cosa che deve contenere.
    I campi del db sono quelli a destra dell'uguale. A sinistra ci sono le variabili che utilizzo nel programma e sono dichiarate nel modulo così sono visibili in tutte le form.
    [OT]
    Senza nulla togliere alle tue conoscenze, io qui ribadisco che stai utilizzando impropriamente il linguaggio tecnico e questo può solo portare a pensare che le tue conoscenze in materia di DBMS non siano così approfondite come tu hai detto in precedenza.

    Un DB è un insieme di 1 o più tabelle. I record non sono contenuti nel DB, ma nelle tabelle che sono definite all'interno del DB.

    Un BD non ha campi: sono sempre le tabelle ad essere definite come insieme di campi.

    Un DB pieno è un DB che ha almeno una tabella con dei record... questo non significa che tutte le tabelle debbano contenere dei record. E se vai ad interrogare una tabella vuota, otterrai un RecordSet vuoto, che non significa affatto che il DB è vuoto.


    Quindi, non te la prendere se qualcuno interpreta male ciò che scrivi e arriva a pensare qualcosa che non corrisponde alla realtà: scrivere utilizzando la giusta terminologia è alla base per farsi capire in modo corretto.
    [/OT]


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.