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

    [SQL] - Aggiungere campo in tabella con proprietà

    Ciao!
    Conosco l'istruzione SQL Alter Table ADD COLUMN

    solo che devo creare (via SQL) un campo in un DB Access e il campo va correttamente impostato (proprietà ecc).

    Il campo visto da ACCESS dev'essere come nell'immagine sotto (vedete le proprietà di formattazione ecc)

    So già che i numeri a precisione singola si usa FLOAT in sql ma per tutte le altre proprietà nn so come fare...

    Suggerimenti?!?
    Immagini allegate Immagini allegate

  2. #2
    Per il valore predefinito dovresti usare DEFAULT 0
    Poi vorrei capire: la query che vuoi creare la devi utilizzare all'interno dell'access stesso direttamente (mediante esecuzione del codice SQL) o usi VB o JAVA con la relativa libreria (o driver) per access?
    Perchè se lavori all'interno di access o usi VB credo che tu possa sfruttare tutte le funzioni che questo mette a disposizione, altrimenti molto dipende da cosa ti mette a disposizione di base la libreria che usi col linguaggio di programmazione...
    E comunque tieni presente che anche il fatto di visualizzare in una maschera di Access o di VB piuttosto che in una pagina web conta per quanto riguarda la formattazione degli stessi...

  3. #3
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Io uso VB6, solitamente basta lanciare il comando SQL tramite ADO e questi lo esegue!

  4. #4
    Allora, ricapitolando, tu usi VB6 per manipolare un DB Access e poi usi access stesso per controllare gli effetti dei tuoi comandi sulle tabelle o fai tutto in ambiente VB?
    Mi pare che Access supporti il formato currency in cui puoi indicare il numero di cifre decimali.
    Usando VB hai sicuramente a disposizione la funzione format() e dovrebbe essere analoga a quella di Access, quindi potresti applicare la stringa di formattazione che ti serve al momento dell'output dei tuoi dati, dai un'occhiata sulla guida in linea, non ho VB installato...

  5. #5
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    ok...ma dimentichiamo per un attimo che uso VB....la stringa SQL per creare un campo di quel tipo qual'è? Fingiamo di dover usare PHP myAdmin per eseguirla...cosa scriveresti...?

  6. #6
    Purtroppo SQL di base non ti fornisce anche la sintassi per formattare una stringa.
    Se dovessi fare in php con db mysql userei una query del tipo:

    codice:
    ALTER TABLE `mia_tabella` ADD `nome_colonna` DECIMAL(10,2) DEFAULT 0 NOT NULL;
    Poi crerei una funzione per il display in output dei miei dati (anche PHP ha una sua funzione format, potrei anche semplicemente usare quella) e userei questa ogni volta che volessi scrivere a video il mio dato. (Bada bene, la userei per scriverlo ma l'aquisizione avverrebbe attraverso una semplice form e poi, se necessario, processerei il dato in input prima di memorizzarlo nel mio DB)

    Spero di esserti stato di aiuto.

    P.S.
    DECIMAL non credo esista in Access... mi pare sia CURRENCY l'equivalente...

  7. #7
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Allora il fatto è che dovrei inserire la funzione in un vasto software già finito...sarebbe da morire...

    Questo che sto facendo è un update al software che mi è stato chiesto e per evitare di dover intervenire manualmente su tutti i software dei clienti vorrei farlo in automatico creando una piccola patch...


    La butto lì....avendo un campo con le stesse identiche proprietà che ho postato sopra nell'immagine è possibile clonarlo?
    In quel caso lo copio nella tabella con un nuovo nome (visto che le proprietà sono identiche)

    Grazie ancora!

  8. #8
    I dati contenuti in un DB (compreso Access) non hanno alcuna formattazione realmente, la formattazione viene assunta (parliamo di access o vb) nel momento in cui carichi il dato in una textbox di una maschera.
    Clonare un campo di una tabella un con semplice comando SQL non credo si possa fare, al piu' puoi crearne uno identico con ADD COLUMN e poi popolarlo con un UPDATE SET, ma creare pur sempre una cosa priva di formattazione.
    Ascolta Veronica, immagino che l'aggiungere un nuovo campo in un DB comporti anche la necessità di gestirlo da un applicativo che lavora su questo db (che tu hai realizzato in vb mi hai detto). In ogni caso dovrai intervenire almeno perchè compaia una nuova textbox relativa al nuovo campo nella maschera dell'applicativo, sbaglio?
    Ammesso che il problema sia semplicemente vedere i dati formattati in questa textbox, io assocerei a questa due eventi:
    - onfocus = formatta il testo in formato numerico semplice per l'inserimento (es. 1000,00)
    - onchange = formatta il testo in formato + ricco per la visualizzazione (es. € 1.000,00)
    In ogni caso nel DB salveresti 1000.00 (i dati grezzi sono questi anche se access te li fa vedere formattati)
    Tranne che i tuoi clienti intervengono sui dati da una visualizzazione tabulare stile access col tuo applicativo vb?

  9. #9
    Originariamente inviato da Veronica80
    Allora il fatto è che dovrei inserire la funzione in un vasto software già finito...sarebbe da morire...

    Questo che sto facendo è un update al software che mi è stato chiesto e per evitare di dover intervenire manualmente su tutti i software dei clienti vorrei farlo in automatico creando una piccola patch...


    La butto lì....avendo un campo con le stesse identiche proprietà che ho postato sopra nell'immagine è possibile clonarlo?
    In quel caso lo copio nella tabella con un nuovo nome (visto che le proprietà sono identiche)
    Non è un'idea da scartare.

    codice:
    Private Sub Command1_Click()
    On Error GoTo Errore
    
      Const strConn = "Provider='Microsoft.Jet.OLEDB.4.0';Data Source='c:\tmp\db2003.mdb'"
      
      Dim DBConn As New ADODB.Connection, fld As New ADOX.Column
      Dim TB As New ADOX.Table, ACAT As New ADOX.Catalog
      
      DBConn.Open strConn, "Admin"
      
      'questo è il codice tipico
      'DBConn.Execute ("ALTER TABLE Tabella1 ADD NuovoCampo integer DEFAULT 0 ")
      
      Set ACAT.ActiveConnection = DBConn
      
      'con questo leggo le info di un campo gia' esistente
      Set fld = ACAT.Tables("Tabella1").Columns("NuovoCampo")
      
      
      'sistemo le proprietà del campo
    '  With fld
    '    .Name = "NuovoCampo"
    '    .Type = adCurrency
    '    .NumericScale = 4
        Dim pp As Property
        For Each pp In fld.Properties
          Debug.Print pp.Name & " --> " & pp.Value
        Next
    '  End With
      
      'imposto la tbb
    '  Set TB = ACAT.Tables("Tabella1")
    '  TB.Columns.Append fld
      
    Fine:
      DBConn.Close
    
    Exit Sub
    Errore:
      Debug.Print Err.Number; Err.Description
      Resume Fine
    
    End Sub
    Con questo bordello di codice partorito alla cavolo fai un po' di tutto.

    Se ne capisci di VB6 :master: noterai che puoi leggere le proprietà di un campo esistente (cosi' com'è ora i codice) oppure creare con stringa (come dicevi inizialmente) oppure creare un campo e le relative proprietà.

    Fa tutto tramite il riferimento alla DLL ADOX


    p.s. la foto è la tua?

  10. #10
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Grazie!
    Devo vedere un po'...io uso un metodo di connessione diversa....
    Inoltre nn riesco a trovare il riferimento per ADOX...come si chiama nella lista dei riferimenti?

    Grazie ancora!

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.