Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188

    [VB6 SP6] Problema query per modifica tipo campo su db mysql

    Salve a tutti.

    oggi ho il problemino di dover cambiare il tipo dati ad alcuni campi di un database, trasferito da access a mysql
    Ora: una volta letti tutti i campi di tutte le tabelle, volevo modificare i campi di un certo tipo (tinyint) in integer o bit o anche string

    La query che utilizzo

    codice:
    alter table `nometabella` alter column `nomecampo` int(5) (adattata da quella acces)
                                               oppure     
                    alter table `nometabella` modify column `nomecampo` int(5) (trovata su un sito di mysql)


    mi continua a dare errore,
    la prima mi dice che c'è un errore di sintassi vicino a int(5)
    la seconda mi dice incorrect integer value: 'V' for column prova a riga una (prova è il nome del campo)
    ok, se tinyint ha un vero o falso, ok, non posso trasformarlo in numerico, ma se lo metto a stringa mi da sempre l'errore di sintassi.
    Dove sto sbagliando, e non riesco a capacitarmene?
    Tutto questo in quanto quando leggo il campo ex boolean (ora tinyint), se ci faccio una if clause sopra mi va in errore, per cui ho pensato di cambiare a tutti il tipo dati. (da interfaccia mysql lo posso fare, ma sono una miriade di campi!!!! e dovendo migrare parecchi database...

    Grazie a chiunque sia in grado di aiutarmi.

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Grazie per la dritta (come sempre veloce e preciso).
    Purtroppo le mie prime ricerche mi avevano inviato a siti 'attendibili' (non so se posso citare la fonte) che appunto mi confermavano l'istuzione come riportato sopra.

    Sauti

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Caro Gibra,
    sperando di non andare contro al regolamento, volevo chiedere il tuo esimio parere sul perchè, se il campo è TINYINT (1) (che dovrebbe corrispondere a Boolean, mi sembra di aver capito) quando lo interrogo, sia che il confronto venga fatto su 0 o 1 o su true o false, mi dà errore.

    Grazie e... ri saluti

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Tinyit è diverso Boolean:

    - Tinyit accetta valori unsigned da 0 a 255 (quindi -1 non lo accetta)

    - Boolean accetta solo due valori: 0 o -1

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Quote Originariamente inviata da gibra Visualizza il messaggio
    Tinyit è diverso Boolean:

    - Tinyit accetta valori unsigned da 0 a 255 (quindi -1 non lo accetta)

    - Boolean accetta solo due valori: 0 o -1
    ok d'accordo per il -1, ma, solo per un mio sapere personale,
    • la migrazione ha 'configurato' il campo boolean di Access come TINYINT (1) su mysql
    • se apro la tabella dati, nel campo in questione vedo il classico flag con o senza la spunta
    • quando leggo il campo, se faccio una print del valore mi da 0 o 1, a seconda, se invece faccio


    codice:
    if record!nomecampo = 0 then stop
    tanto per fare un esempio, mi dice

    codice HTML:
    La variabile utilizza un tipo di automazione non supportato in Visual Basic
    Per cui, mi stavo chiedendo perche, non mi vedeva lo 0, o meglio, se faccio la if si... inalbera!!!
    Solo una curiosità personale, tutto qua.

    Comunque, ho notato, con i vari tentativi, che se metto il campo a bit, non devo modificare le if in quanto mi legge se vero o falso (anche qui ti chiedo esimio parere)


    Saluti e buona giornata

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    record!nomecampo
    Ma sei sicuro ?
    Non dovrebbe essere:

    codice:
    If Recordset!NomeCampo = 0 Then Stop
    ???

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Quote Originariamente inviata da gibra Visualizza il messaggio
    Ma sei sicuro ?
    Non dovrebbe essere:

    codice:
    If Recordset!NomeCampo = 0 Then Stop
    ???
    Sì, scusa , è recordset. Comunque con il confronto con 0 (valore verificato in debug) mi da quell'errore. Se invece il confronto lo faccio sul campo modificato a bit, posso fare il confronto con true e false (per cui non devo andare a modificare il programma!)

    Saluti

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Caspita, Gibra,

    (Sperando di non andare contro al regolamento, ma... anche questo è problema di tipo dati)nella querry con comparazione della data, se il campo che viene comparato non viene formattato come data 'yyyy-mm-dd', non funonzia. Ho anche provato a metter il campo del db da datetime a date, ma nulla. Sono costretto a modificare tutte le query

  10. #10
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Questo è un problema di configurazione del database.

    Cosa hai usato per trasferire il db da Access a MySQL?

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.