Autore Topic: modifica chiave primaria  (Letto 1784 volte)

Offline EnzoCurky

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
modifica chiave primaria
« il: 31 Gennaio 2010, 18:06:05 »
ciao a tutti espongo subito il problema...

Questa è la mia tabella...
"CREATE TABLE 'clienti' ( 'id' INTEGER PRIMARY KEY, 'nome' VARCHAR(255) DEFAULT NULL, 'cognome' VARCHAR(255) DEFAULT NULL, 'indirizzo' VARCHAR(255) DEFAULT NULL);"

quando voglio inserire i dati nella tabella clienti non riesco ad inserire nel campo id il valore ke voglio io ma in automatico lo inserisce in modo crescente,mentre gli altri campi vengono salvati con i valori ke scrivo io.....
          $hConn.Begin
          hres = $hConn.Create("clienti")
          hres!id = TextBox3.Text
          hres!nome = TextBox4.Text 
          hres!cognome = TextBox5.Text
          hres!indirizzo = TextBox6.Text
          hres.Update     
          $hConn.Commit

perche??????sto impazzendo .. :'( :'( :'( :'(

stessa cosa se cerco di modificare il loro valore...i campi nome,cognome e indirizzo si,mentre il campo id (ke è la chiave primaria)no...

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: modifica chiave primaria
« Risposta #1 il: 31 Gennaio 2010, 18:20:21 »
E' ovvio. Se dichiari un campo INTEGER PRIMARY KEY un DB imposta quel campo autoincrementante in automatico, non puoi scriverci sopra.

O dichiari il campo di un altro tipo invece che INTEGER oppure non lo dichiari PRIMARY.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline EnzoCurky

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
Re: modifica chiave primaria
« Risposta #2 il: 31 Gennaio 2010, 19:39:56 »
ho tolto dalla creazione della tabella il PRIMARY KEY,ma ugualmente nn me lo fa cambiare...posso alternativamente mettere il campo id come string e come chiave primaria?o magari aggiungo un altro campo alla mia tabella clienti cosi:

"CREATE TABLE 'clienti' ( 'idTab' INTEGER PRIMARY KEY,'id' INTEGER DEFAULT NULL, 'nome' VARCHAR(255) DEFAULT NULL, 'cognome' VARCHAR(255) DEFAULT NULL, 'indirizzo' VARCHAR(255) DEFAULT NULL);

ke ne dite?
-------------------------------------
Poi..nel mi database ho.
id=1,nome=enzo;
id=3,nome=ciccio;
id=4,nome=lory;

come faccio a scrivere il mio nuovo campo 'nome=leo' sulla posizione 'id=2', se ogni volta ke inserisco un record id viene incrementato da solo?


 :'( :'( :'( :'( :'( :'( :o :o :o :o

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: modifica chiave primaria
« Risposta #3 il: 31 Gennaio 2010, 22:24:25 »
se hai creato la tabella con un undice che si chiama idtab poi sicuramente imporre un valore al campo "id" se è dichiarato solo numerico, controlla bene il codice

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: modifica chiave primaria
« Risposta #4 il: 31 Gennaio 2010, 23:09:45 »
Scusa ma nella query SQL che hai postato leggo _ancora_ PRIMARY INTEGER KEY...
E poi, che DB usi? Spesso alcuni DB impostano in automatico il primo campo autoincrementante se lo vedono di tipo integer. Prova a dichiararlo di un altro tipo.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline EnzoCurky

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
Re: modifica chiave primaria
« Risposta #5 il: 01 Febbraio 2010, 00:35:52 »
sto usando un DB sqlite...grazie cmq delle risposte proverò come hai detto tu, ma per quanto riguarda...

Poi..nel mi database ho.
id=1,nome=enzo;
id=3,nome=ciccio;
id=4,nome=lory;

come faccio a scrivere il mio nuovo campo 'nome=leo' sulla posizione 'id=2', se ogni volta ke inserisco un record id viene incrementato da solo?

ke cosa sai dirmi?esiste un modo x fare questo?

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: modifica chiave primaria
« Risposta #6 il: 01 Febbraio 2010, 16:17:55 »
Ti ho già risposto. Alcuni DB (e SQLite mi pare rientri in questi) impostano in automatico la proprietà autoincrementante se vedono che il primo campo è di tipo Integer e se si chiama ID.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline EnzoCurky

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
Re: modifica chiave primaria
« Risposta #7 il: 02 Febbraio 2010, 16:19:20 »
ok.....intesi...vuoi dire ke se invece di chiamarlo id lo chiamo codice e lo dichiaro integer risolvo il problema?......se invece lo dichiaro string ma voglio ke vengano inseriti solamente dei numeri come faccio?dovrei controllare il codice ascii dei tasti premuti o esiste qualke funzione apposto x questo?

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: modifica chiave primaria
« Risposta #8 il: 02 Febbraio 2010, 16:22:46 »
se invece lo dichiaro string ma voglio ke vengano inseriti solamente dei numeri come faccio?dovrei controllare il codice ascii dei tasti premuti o esiste qualke funzione apposto x questo?

Se cerchi nel forum mediante la ricerca vedrai che questo argomento in particolare è stato già discusso..

Offline EnzoCurky

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
Re: modifica chiave primaria
« Risposta #9 il: 02 Febbraio 2010, 16:43:12 »
grazie potresti dirmi cosa scrivere nella ricerca?..please :( :( :( :(

Offline EnzoCurky

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
Re: modifica chiave primaria
« Risposta #10 il: 02 Febbraio 2010, 17:39:06 »
scusate la mia stupidità..... :P :P

ho appena trovato eseguendo una ricerca ke esiste il controllo ValueBox.....


grazie ...

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: modifica chiave primaria
« Risposta #11 il: 02 Febbraio 2010, 18:12:44 »
Tranquillo....se cerchi bene trovi pure funzioni che "trasformano" una textbox in una valebox ma più potente poichè gestisce anche decimali...

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: modifica chiave primaria
« Risposta #12 il: 03 Febbraio 2010, 23:14:48 »
@ EnzoCurky:
vedo che la tua tabella non contiene i nomi ordinati alfabeticamente e capisco che vuoi inserirli nella posizione che più ti aggrada. Avendo definito un "id", cone ti ha detto Leo, non hai alcuna possibilità di gestirlo.
A mio modestissimo avviso, l'unica cosa che puoi fare per inserire il nominativo nella posizione che desideri è quella di caricarti la tabella del DB in memoria, oppure in una ListBox, eseguire l'inserimento lì, dove vuoi tu e, dopo avere cancellato tutta la tabella del DB, riscriverla per intero coi dati completi dell'inserimento fatto.
Ciao.
:ciao:

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: modifica chiave primaria
« Risposta #13 il: 04 Febbraio 2010, 01:02:49 »
Io non capisco una cosa.
Ma perché ti interessa che i dati vengano inseriti nel DB in un certo ordine?
Essendo un DB un motore che può fornire dati secondo query di ricerca, perché non inserirli come capita ed ordinarli solo al momento della lettura facendo eseguire l'operazione di ordinamento direttamente al DB stesso?

Codice: [Seleziona]
SELECT * FROM clienti ORDER BY (quello che ti pare)
Visita il mio sito personale: http://www.leonardomiliani.com

Offline EnzoCurky

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
Re: modifica chiave primaria
« Risposta #14 il: 04 Febbraio 2010, 10:03:11 »
ciao Picavbg ho risolto il problema dichiarando id come numeric....

ciao leo72 ho fatto questo xke nel mio DB eseguo un comando ke cerca il primo record libero col minore id disponibile, mentre il comando aggiungi crea un record aumentando di 1 l'id maggiore.