+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Impostare valore default campo tabella da vba

  1. #1
    AmnesiaVivace non è in linea Novello
    Post
    16

    Impostare valore default campo tabella da vba

    Buongiorno,

    mi scuso per la banalità del problema, ma cercando non ho trovato la soluzione:

    Copio la struttura di una tabella con queste istruzioni:

    codice:
    Dim strSQL As String
    strSQL = "SELECT * INTO RegistrazioniConto2 FROM RegistrazioniConto WHERE 1=0;"
    CurrentDb.Execute strSQL
    il mio problema è che la nuova struttura non si porta dietro i valori predefiniti impostati per alcuni campi

    come faccio a impostare il valore predefinito (in questo caso
    codice:
    =now()
    via codice?

    ho provato

    codice:
    Dim strSQL2 As String
    strSQL2 = "ALTER TABLE RegistrazioniConto2  ALTER Data_imputazione DEFAULT '=now()';"
    CurrentDb.Execute strSQL2
    e alcune altre varianti ortografiche, ma non funziona,
    grazie

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,981
    Concettualmente quello che fai non è il massimo, andare a manipolare Oggetti del SERVER da codice, io lo eviterei...!
    Se il Server fosse SQL_SERVER...? Il tuo prodotto non sarebbe scalabile...

    Ad ogni modo tecnicamente quello che succede è ovvio, in quanto esegui un comando DDL di creazione Tabella, ma di fatto forzi solo la Struttura, quindi la Collection FIELDS e di conseguenza il FIELD_TYPE e non le FILED_Properties

    Ora se tu invece di impostare il DEFAULTVALUE nella Tabella lo gestissi nel ControlloAssociato di Maschera non avresti questo problema, io preferirei questo metodo.

    In ogni caso, se non stai operando con FE-BE divisi puoi fare così, in caso sia Valore di Data mi pare sia questa la sintassi:
    codice:
    CurrentDb.TableDefs("TableName").Fields("FieldName").DefaultValue = Str(CDbl(Now()))
    Se invece hai FE-BE separati, ovviamente non funziona, devi aprire un oggetto Database sul FE, assicurandoti che la Tabella sia libera da BLOCCHI.

    codice:
    Dim dbEXT As DAO.Database
    Set dbEXT=OpenDatabase(....)
    dbEXT.TableDefs("TableName").Fields("FieldName").DefaultValue = Str(CDbl(Now()))
    A questo punto però devi rimuovere il LINK della Tabella e ripristinarlo.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  3. #3
    AmnesiaVivace non è in linea Novello
    Post
    16
    In realtà è un comando sul BE da operare (in presenza di determinate condizioni che bloccano il FE) una volta l'anno. Il software non opera in rete.

    Quote Originariamente inviato da @Alex Visualizza il messaggio

    In ogni caso, se non stai operando con FE-BE divisi puoi fare così, in caso sia Valore di Data mi pare sia questa la sintassi:
    codice:
    CurrentDb.TableDefs("TableName").Fields("FieldName").DefaultValue = Str(CDbl(Now()))
    grazie, quasi giusto, perchè questa istruzione forza come valore predefinito il "now" del momento in cui metti il valore predefinito.

    codice:
    CurrentDb.TableDefs("RegistrazioniConto2").Fields("Data_imputazione").DefaultValue = "=Now()"
    Così fa esattamente quello che mi serve. MA senza il tuo aiuto non ci sarei mai arrivato.
    Ultima modifica di AmnesiaVivace; 10-07-2019 16:32 

  4. #4
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,981
    Si in effetti quella è la Sintassi che si usa per i DEFUALTVALUE dei controlli... non avevao testato.

    Bene.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi