+ Rispondi al messaggio
Pagina 1 di 5 123 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 42

Alter table

  1. #1
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Provo a resettare il campo contatore di access ma con il seguente codice non funziona.
     strconn = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & DBase 
                objconn = New OleDbConnection(strconn)
                sql = "ALTER TABLE docpersonali ALTER COLUMN id COUNTER(1,1)"
                daci = New OleDbDataAdapter(sql, objconn)
                daci.SelectCommand.CommandText = sql
                daci.SelectCommand.Connection = objconn
                objconn.Open()
                daci.SelectCommand.ExecuteNonQuery()
    
    Dove Dbase ha il percorso bin\x86\release\DocumentiPersonali.mdb
    in fase di esecuzione non produce l'effetto di risistemare il contatore partendo da 1 con incremento di 1
    ma rimane storpiato di 1 meno,invece di sistemarsi da 5 a 6 rimane a 7 in quanto il 6°record è stato eliminato.
    Ho cercato e la soluzione sembra quella che ho scritto nel codice ma non produce niente.
    Idee?
    ℹ️ Leggi di più su sistemista ...

  2. #2
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    La proprietà SelectCommand del DataAdapter serve, come dice il nome, a contenere una query di selezione (SELECT... FROM...), non un'istruzione che altera la struttura della tabella.
    I campi contatore comunque hanno il solo scopo di assicurare che ogni record sia identificabile univocamente e il valore del contatore non ha nessun significato.
    ℹ️ Leggi di più su Brontolo ...

  3. #3
    E aggiungo che se quell'id viene usato in relazione ad altre tabelle, avrai un errore dal motore di database per violazione dell'integrità referenziale
    ℹ️ Leggi di più su AntonioG ...

  4. #4
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Ok.grazie atutti e due,comunque la mia era mera informazione,lo sò che non influisce se sia sbagliato il contatore,l'importante ci sia la chiave primaria che identifica in modo univoco il record ma per curiosità al posto del selectcommand quali istruzioni devono essere fatte?
    ℹ️ Leggi di più su sistemista ...

  5. #5
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    E aggiungo che se quell'id viene usato in relazione ad altre tabelle, avrai un errore dal motore di database per violazione dell'integrità referenziale
    No,non ci sono altre relazioni con altre tabelle.
    ℹ️ Leggi di più su sistemista ...

  6. #6
    Quindi a che ti serve l'ID?

    Comunque utilizza un Command
    ℹ️ Leggi di più su AntonioG ...

  7. #7
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Quindi a che ti serve l'ID?

    Comunque utilizza un Command
    Mi serve, in quanto se metto la chiave primaria sul cognome per esempio,non la prende in quanto al di fuori di mia moglie, i nostri figli hanno lo stesso cognome mio,quindi,un campo contatore non influisce sul resto.
    Tutto quì.
    Per la ristabilizzazione del contatore è come hai indicato nel precedente post.
    Ho trovato indicazioni sul nostro forum scritto da MarcoGG.
    Questo il codice che ho trovato(Fonte MasterDrive.it)
    Dim percorsoDB As String = Application.StartupPath & "\test.mdb"
     
    Dim CN As New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & percorsoDB)
    Dim sqlCmd As String
     
    Using CMD As New OleDb.OleDbCommand()
        CMD.Connection = CN
        CN.Open()
     
        'Tabella Persone
        sqlCmd = "CREATE TABLE Persone (" & _
                 "ID COUNTER PRIMARY KEY, " & _
                 "Cognome CHAR(20), " & _
                 "Nome CHAR(20), " & _
                 "Città INTEGER" & ")"
        CMD.CommandText = sqlCmd
        CMD.ExecuteNonQuery()
     
        'Tabella Città
        sqlCmd = "CREATE TABLE Città (" & _
                 "ID COUNTER PRIMARY KEY, " & _
                 "Nome CHAR(20)" & ")"
        CMD.CommandText = sqlCmd
        CMD.ExecuteNonQuery()
     
        'Relazione Uno-Molti Città-->Persone
        sqlCmd = "ALTER TABLE Persone ADD CONSTRAINT PersoneCittà_FK FOREIGN KEY (Città) REFERENCES Città(ID) ON DELETE SET NULL"
        CMD.CommandText = sqlCmd
        CMD.ExecuteNonQuery()
        CN.Close()
    End Using
    
    Non l'ho ancora provato ma penso che funzioni,nauralmente adattandolo alle mie esigenze.
    Grazie comunque.
    Ultima modifica di sistemista; 21-09-2021 22:25 
    ℹ️ Leggi di più su sistemista ...

  8. #8
    Come chiave primaria usa il CF
    ℹ️ Leggi di più su AntonioG ...

  9. #9
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Come chiave primaria usa il CF
    Scusa Antonio,CF che sarebbe?Codice fiscale?
    ℹ️ Leggi di più su sistemista ...

  10. #10
    L'avatar di SirJo
    SirJo non è in linea Scolaretto
    Quote Originariamente inviato da sistemista Visualizza il messaggio
    Scusa Antonio,CF che sarebbe?Codice fiscale?
    Si, il codice fiscale

+ Rispondi al messaggio
Pagina 1 di 5 123 ... ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 7
    Ultimo Post: 03-10-2016, 07:47
  2. Risposte: 2
    Ultimo Post: 06-03-2015, 10:29
  3. Alter Table che funziona male
    Da aldodellacasa nel forum Visual Basic 6
    Risposte: 5
    Ultimo Post: 20-02-2014, 13:38
  4. [Generale]Chiarimento su ISTRUZIONE ALTER TABLE
    Da Aemilius nel forum Altri Database Server
    Risposte: 7
    Ultimo Post: 02-07-2011, 08:45
  5. Chiarimento istruzione ALTER TABLE
    Da alimax88 nel forum Visual Basic .Net
    Risposte: 9
    Ultimo Post: 01-07-2011, 20:25