Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    13

    Utilizzo dell'istruzione SQL "Alter table"

    Un saluto ai partecipanti, chiedo aiuto per la seguente questione:
    sto utilizzando l'istruzione SQL Alter table in un database ACCESS per inserire un nuovo campo in una tabella esistente. L'unico problema che riscontro è dovuto al fatto che vorrei definire, dinamicamente, il nome del campo, ovvero vorrei poter inserire in una variabile il nome del campo ed utilizzare l'istruzione SQL in un ciclo potendo quindi modificare, in ogni iterazione, il contenuto della variabile e pertanto il nome del campo inserito nella tabella.
    Ho trovato solo esempi nei quali il nome del campo è stabilito già nell'istruzione SQL.

    Ringrazio anticipatamente chiunque possa darmi un suggerimento
    Steno56
    Steno

  2. #2
    non capisco... fai vedere l'esempio che hai provato? Con cosa stai programmando?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    13
    Stavo programmando un database ACCESS in VB, nel frattempo ho già risolto.
    Grazie comunque per la disponibilità.
    Steno
    Steno

  4. #4
    spiega come hai fatto, così magari qualche altro forumista ne può trarre beneficio

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    13

    Codice VB che risollve il mio porblema

    Quote Originariamente inviata da optime Visualizza il messaggio
    spiega come hai fatto, così magari qualche altro forumista ne può trarre beneficio
    Giusto!
    qui di seguito il codice che, al click del Comando1 su un form, aggiunge una colonna alla tabella "Anagrafica".
    Il problema consisteva nel poter modificare il nome del campo, aggiornando la variabile "Numerazione", lasciando invariata l'istruzione SQL.

    Option Compare Database
    Private Sub Comando1_Click()
    ' Dichiarazioni di variabili
    Dim Cnn As Object
    Dim Rst1 As New ADODB.Command
    Dim Numerazione As Integer
    Dim Istr1 As String, Istr2 As String, Istr3 As String
    Dim Campo1 As String
    ' ------------------------------------
    Set Cnn = CurrentProject.Connection
    ' ------------------------------------
    Numerazione = (NCampi - 9) / 4 + 1 ' Numerazione progressiva dei campi
    ' Costruzione della stringa di comando
    Istr1 = "Alter Table Anagrafica ADD" ' Parte fissa dell'istruzione SQL
    Istr2 = " CHAR(2) Null" ' Tipo di dato per il campo
    Istr3 = " EntrataUscita" & Numerazione ' Nome del campo con numerazione
    Campo1 = Istr1 + Istr3 + Istr2
    ' Attivazione degli oggetti di Comando
    Rst1.ActiveConnection = Cnn
    Rst1.CommandType = adCmdText
    ' ---------------------------------------
    ' Esecuzione dell'istruzione SQL
    Rst1.CommandText = Campo1
    Rst1.Execute
    ' -----------------------------------------
    Cnn.Close
    Set Cnn = Nothing
    ' -----------------------------------
    End Sub

    Chissà forse potrà servire,
    un saluto, Steno56
    Steno

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Premesso che non ho capito la logica per trovare il nome del campo ( ma sicuramente c'è )
    Premesso soprattutto che mi sembra stranissimo aggiungere i campi in quel modo

    detto ciò .......
    Invece di usare ADO potresti con 1 sola riga usare il più diretto "Execute"
    codice:
    DBEngine(0)(0).Execute ("Alter Table Anagrafica ADD EntrataUscita12 CHAR(2) Null")
    e potrai anche eliminare il riferimento a Mocrosoft ActiveX data Object.......
    .
    Ultima modifica di nman; 13-10-2018 a 15:32

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    13

    Codice VB che risollve il mio porblema

    Quote Originariamente inviata da nman Visualizza il messaggio
    Premesso che non ho capito la logica per trovare il nome del campo ( ma sicuramente c'è )
    Premesso soprattutto che mi sembra stranissimo aggiungere i campi in quel modo

    detto ciò .......
    Invece di usare ADO potresti con 1 sola riga usare il più diretto "Execute"
    codice:
    DBEngine(0)(0).Execute ("Alter Table Anagrafica ADD EntrataUscita12 CHAR(2) Null")
    e potrai anche eliminare il riferimento a Mocrosoft ActiveX data Object.......
    .
    Grazie per l'alternativa,
    molto semplicemente non conoscevo questa possibilità, ci provo.
    Un saluto
    Steno

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