Newsgroup: it.comp.lang.visual-basic
Titolo: Valore predefinito di un campo uguale a quello di un altro campo

Ciao.
Ho una tabella di SqlServer 2000 con 3 campi:
ID, Ordine, Descrizione.
Il campo ID è un campo identità quindi viene inserito automaticamente un
valore univoco ogni volta che si aggiunge un record.
Vorrei impostare il campo Ordine uguale al campo ID quando si inserisce un
nuovo record.
Ho provato ad impostare come valore di default il nome del campo ID, ma non
lo accetta.
E' possibile eseguire un'operazione simile?
Grazie a tutti per l'aiuto.
Skysurfer

 ha scritto nel messaggio
news:aa32fq$i5l$1...@serv1.iunet.it...

Beh, forse ti conviene aggiungere il record e poi modificare il valore del campo
Ordine uguale al valore del campo ID.
Però una domanda sorge spontanea: a cosa ti servono 2 campi con lo stesso
valore?
Non puoi usare il capo ID come campo Ordine, oppure impostare il campo ordine
come campo identità?
Ciao!
--
Esteban
Hosted by 
www.seber.it
(Remove nonspammare for reply)


Il mio problema principale è questo:
permettere all'utente di cambiare manualmente l'ordinamento di
visualizzazione di una tabella.
L'unica soluzione che mi è venuta in mente era questa (sono graditi
suggerimenti per soluzioni migliori!):
Utilizzare il campo ID per l'identificazione univoca del record
Utilizzare il campo ordine per impostare l'ordinamento, dando la possibilità
all'utente di modificare il contenuto del campo.
Non posso usare un campo identità perchè altrimenti il valore non sarebbe
modificabile.
Grazie per la risposta.
Skysurfer

 wrote in message
news:aa32fq$i5l$1...@serv1.iunet.it...

se conn è una connection puoi fare:
conn.execute("insert into nometabella (descrizione) values('" & descrizione
& "') ;" & "update nometabella set ordine=@@identity")
controlla, ma dovrebbe funzionare..
al limite fai una sp..
HTH
Saluti
--
Stefano Zamboni 
sz...@libero.it
Legge di Biondi:
Se il tuo progetto non funziona, controlla la parte che non ti pareva
importante.

 ha scritto nel messaggio
news:aa3e7n$5i1$1...@newsreader.mailgate.org...



quoting? what's quoting? :-|
comunque, parafrasando qualcuno.. google is your friend:
http://groups.google.it/groups?q=IDENTITY_INSERT%20OFF&hl=it&sa=N&tab=wg
(naturalmente tutta su una riga..)
HTH
--
Stefano Zamboni 
sz...@libero.it
Secondo postulato di Troutman:
Se il programma è stato concepito in modo tale che i dati incorretti siano
rifiutati, ci sarà sempre un idiota abbastanza ingegnoso per trovare il
metodo di farli passare.


L'errore che ti ho detto prima non lo da più, probabilmente avevo tentato di
inserire il valore di @@identity nel campo ID.
Comunque l'istruzione che ho provato è questa:
cn.Execute "INSERT TabDoc (Descr,Ordine) VALUES ('Nuovo1',@@identity)"
E il campo ordine viene inizializzato correttamente solo dopo la prima
insert.
Se stoppo il prog. e lo faccio ripartire, il primo record inserito ha Null
nel campo Ordine mentre tutti i record successivi hanno il valore corretto.
Allora ho provato con questa:
cn.Execute "INSERT TabDoc (Descr,Ordine) SELECT 'NuovVB3',(SELECT
MAX(Ordine)+1 FROM TabDoc)"
che pero' funziona solo se sono già presenti record nella tabella.
Se invece la tabella è vuota la SELECT MAX(Ordine) torna Null e anche
sommando 1 il valore rimane sempre Null.
Grazie.
Skysurfer

 cn.Execute "INSERT TabDoc (Descr,Ordine) VALUES ('Nuovo1',@@identity)"
[cut]
.. infatti la stringa sql che ti ho dato io è diversa: sono 2, separate da
un ; devi per forza eseguire la prima (che crea il record ed inserisce il
null in ordine) e poi esegui l'altra, che è di update..
ti consiglio di leggere qualcosa su sql server... se lo hai installato, vai
a leggere l'help del query analyzer, che è una guida al transact sql..
HTH
--
Stefano Zamboni 
sz...@libero.it
Leggi di Manubay per i programmatori:
1) Se la modifica di un programmatore a un programma esistente funziona,
probabilmente non era quello che voleva il cliente.
2) Il cliente non sa quello che vuole, ma sa quello che non vuole.