Newsgroup: it.comp.lang.visual-basic
Titolo: Creazione casuale di stringhe a partire dai dati di una tabella

Ciao a tutti, ho una tabella Clienti in Access con i campi Codice,
Nominativo, i dati dell'azienda, Tipologia Cli, e anno reperimento.
Questa tabella al momento dell'installazione del programma in Vb è vuota.
L'utente importa i dati da un suo database, il problema però è che dal suo
db può importare solo i record dei campi Nominativo, dati azienda, Tipologia
Cli e anno reperimento ma non il campo Codice.
Supponiamo che una volta importato il suo db la tabella clienti si presenti
in questo modo:
Codice    Nome                Descrizione                            TipCli
Anno
               Tizio Spa           Azienda Telecomunicazioni     Azienda
2000
               Caio S.r.l.          Servizi informatici
Azienda      2001
               Sempronio spa   Impresa pulizie                       Azienda
2002
               Rossi Carlo        Avvocato
Privato       2002
A questo punto vorrei creare una routine che inserisca dei codici
alfanumerici di 6 cifre nella tabella clienti prendendo le lettere dal campo
nome, anno e TipCli.
Es. TZO00A, CAI01A, SMP02A, RSC02P
Per quanto riguarda le prime tre lettere può prenderne 3 qualsiasi dal nome
l'importante che non siano già presenti mentre per l'anno prende le ultime 2
cifre e infine A sta per Azienda e P per Privato.
Come potrei fare. Sareste veramente gentili se mi deste una mano.
Ciao Marco
--
----|----|----|----|----|----|----|----|----|----|----|----|----|----|--
www.360net.it

 dal nome l'importante che non siano già presenti
Che non siano già presenti in tutto il database? E se il nome è LAY oppure
CE'?
Temo che per ottenere un codice univoco (chiave dell'indice), tenendo anche
in conto di eventuali "omonimie" ddovute agli altri campi, tu debba
prevedere un campo contatore a incremento automatico.

 ha scritto nel messaggio
news:FO0G9.39451$3l.10...@twister1.libero.it...

Prevedendo un campo contatore il codice diventerà LAY02P001 però come posso
creare il codice di cui parlavo prima?

 posso creare il codice di cui parlavo prima?
Mi pare che il tuo scopo sia quello di generare una chiave univoca. Il campo
contatore è la chiave univoca. Ti basta prevederlo ed è disponibile, senza
accodarlo al codice. Il problema del codice è dovuto al fatto che tu
vorresti prendere 3 lettere casuali dal nome. E se il nome ne ha solo due?
Non hai risposto. Ammettendo che tutti i nomi abbiano almeno 3 lettere, di
poter prendere da tutti le prime 3 (senza alcuna garanzia di univocità) e
poi l'anno, etc. si può fare anche con un comando SQL di Update, ma non
risolve il problema dell'univocità. Ovviamente il tutto può essere fatto
anche con un programma in VB, con maggiore elasticità di gestione, però tu
devi prima stabilire, con certezza, quali sono le "regole".

 vorresti prendere 3 lettere casuali dal nome. E se il nome ne ha solo due?
Non ci sarà mai un nome di 2 lettere, perchè come ti ho detto prima nel caso
di un privato avrà anche il nome e quindi la terza lettera si prende dal
nome e nel caso di un'azienda non avrà mai una ragione sociale di 2 lettere
senza il nome del proprietario o il tipo di società.
Prova comunque a non considerare l'univocità (tanto questo codice lo devo
applicare anche in un'altra sezione dove è impossibile che ci sia univocità)
come faccio a creare dei record che prendano tre lettere a caso da un campo
nome che sicuramente ha più di 3 lettere?
Il criterio dovrebbe essere quello del codice fiscale.
Spero di essermi spiegato, altrimenti resto disponibile per qualsiasi
chiarimento.
Ciao
Marco

 lettere? Il criterio dovrebbe essere quello del codice fiscale.
Con un comando SQL per Access/DAO (Salvati una copia del database e prova,
per esempio, con VisData o con qualche Data Manager disponibile sul Sito
Comune):
comando="Update Tabella Set Codice='" & Left(Nome,3) & Right(10000+Anno,2) &
Left(TipCLI,1) & "'"
Non l'ho provato ed è quindi da verificare. Non gestisce la casualità delle
lettere, ma prende le prime tre. Inoltre è certamente necessario adeguarne
la sintassi nel caso si usi  ADO. In ogni caso, con un programma, puoi
scandagliare tutti i records e per ciascuno assegnare il campo Codice come
meglio desideri.