Modificare DataType di una tabella MDB da codice

di il
5 risposte

Modificare DataType di una tabella MDB da codice

Buongiorno a tutti,
in una tabella di un db Access (MDB) ho un campo che che di tipo Testo Breve (lunghezza 1) e vorrei convertirlo in typo YesNo (boolean) ma non riesco a farlo.
Questo è il codice:

        Dim strsql As String
        strsql = "ALTER TABLE Tab_TipDoc ALTER COLUMN CliForObbliga YesNo;"
        ' strsql = "ALTER TABLE Tab_TipDoc ALTER COLUMN CliForObbliga String(10);"

        Try
            Dim MyDB As New OleDbConnection(se_StrConn & se_pathMdb & se_nameMdbAzienda)
            MyDB.Open()
            Dim cmd = New OleDbCommand(strsql, MyDB)
            cmd.ExecuteNonQuery()
            MyDB.Close()
        Catch ex As Exception
            '
        End Try
Se provo a cambiare le dimensioni non ci sono problemi (vedi riga remmata), ma se cerco di cambiarne il tipo mi viene segnalato che: "Tipi di dati non corrispondenti nell'espressione criterio."

Sapete riportarmi sulla retta via?
Grazie

5 Risposte

  • Re: Modificare DataType di una tabella MDB da codice

    Aggiugo:
    se da Access modfico il tipo di campo in YesNo e poi lo riporto a Testo Breve, funziona tutto.
    Da quel momento posso cambiare il tipo di campo in tutti i modi.
    Però il mio problema è il primo cambio.
  • Re: Modificare DataType di una tabella MDB da codice

    Secondo me è sbagliato il "YesNo", proverei piuttosto a dirgli "Boolean" oppure "Yes/No"
  • Re: Modificare DataType di una tabella MDB da codice

    Ciao SirJo,
    grazie per la risposta festiva.
    Ho già provato le varie combinazioni: Boolean, Yes/No, SiNo, Si/No ma non funziona nessuna.
    Quella corretta è proprio YesNo,ed infatti, dopo aver fatto la prima modifica da Access, funziona correttamente.
  • Re: Modificare DataType di una tabella MDB da codice

    Salve,
    non uso direttamente Access... usavo gli MDB ed il Jet Engine, ed e' una cosa diversa da usare Access...

    a mio avviso "sbagli" perche' ti basi su quanto fa Access (prgramma, non motore database)...
    secondo me, Access ci mette del "suo" nella modifica fatta tramite "applicativo", e tu in effetti vorresti cambiare qualche cosa in un altra in maniera troppo brutale...
    Access, sempre secondo me, vede la tua richiesta di modifica e riesce ad assecondarti "direttamente", nel senso che genera una nuova colonna di tipo boolean, ed in autonomia/magia converte il valore di tipo "1" / "0" (o simile, ma credo proprio questo) in vero/falso di tipo boolean e "fa la sua magia"...
    se invece la vuoi fare tu, non puo' esserci magia, bensi' un passaggio algoritmico che trasformi il contenuto della tua colonna originale nel "tipo di dato" corretto...
    a naso, io genererei prima una colonna di tipo int, traslerei il contenuto da colVecchia a colonna int con il solo "VAL(colonna)" in modo da avere quanto ti necessita, e poi aggiungerei la nuova colonna dove l'int di 1/0 possa essere traslato direttamente in un bool,,,
    magari una prova di passaggio del VAL(colonna) al tipo bool la farei lo stesso
    my $0.02
    salutoni romagnoli
    --
    Andrea
  • Re: Modificare DataType di una tabella MDB da codice

    Ciao asql,
    immaginavo ci fosse dietro qualcosa di quel 'satanasso' di Access.
    I dati nel campo non sono un problema quindi avevo già risolto cancellando il campo e ricreando il campo, però quello che mi fa arrabbiare è non riuscire a cambiarne il tipo da codice. Pazienza.
Devi accedere o registrarti per scrivere nel forum
5 risposte