Newsgroup: it.comp.appl.access
Titolo: [NIUBBO] Mia presentazione e prima richiesta aiuto

Ciao a tutti...
mi chiamo Alex, ho 23 anni e sto cercando di "impratichirmi" con l'ultimo
programma di Office che non ho mai imparato ad usare veramente.
Ora che ne ho bisogno davvero, sto facendo un full immersion di informazioni
mentre allo stesso tempo lavoro al mio primo database!
Fin qui sono bastati l'aiuto del programma (ho la versione 2000) e "Access
2000 for Dummies" (come primo libro volevo una versione facile :-), ma ora
ho bisogno di approfondire le conoscenze.
Il primo problema č questo:
Ho due tabelle. La prima ha l'anagrafica dei clienti, la seconda č
semplicemente la lista delle loro operazioni. Ogni cliente ha un suo codice.
Ho creato un form per l'inserimento delle operazioni. All'interno di questo
uso una combo box per inserire il nome del cliente. Mi piacerebbe che
automaticamente il programma inserisse il codice del cliente nel form e
quindi nella tabella una volta selezionato il nome. Credo che vada creata
una text box con una formula ben precisa... mi date una mano plz?
Grazie di cuore
Alex


Ben arrivato.
Se la combo si alimenta da una query che non ha il [codice] del cliente
allora aggiungilo e prendi nota del numero di colonna (partendo da zero).
Sull'evento Click della combo potresti scrivere:
Me.[Codice] = Me.MiaCombo.column(3) ovviamente il numero di colonna sarà
diverso.
Ricorda ancora che se usi questo metodo dovrai aggiungere alle proprietà
della combo il numero di colonne e relative larghezze. Per la colonna
[Codice] puoi impostare la larghezza a zero.
Altra strada: usare un DlookUp. Questo è possibile se il cognome del cliente
fosse univoco (cosa molto improbabile).
Ciao, Carlo

 Alex
Ciao e anzitutto benvenuto.
Ti consiglio come prima cosa di leggerti le "Istruzioni per l'uso" di questo
NG per una corretta partecipazione, soprattutto riferendoti al quoting e ai
subject (benvenga la presentazione ma non il riferimento al primo quesito).
Mi tolgo la maschera feroce e vengo al tuo problema.
Credo che possa bastare inserire nella tab dei movimenti una combo che punta
al codice cliente, poi ti crei una relazione con integrità referenziale uno
a molti tra le due tabelle e infine crei una query che unisca le due
tabelle.
Guardati Ordini nel file Nwind che hai a coredo di Access
ciao MAssimiliano
--------------------------------
Inviato via 
http://usenet.libero.it


Beh, per ora l'anagrafica prevede un solo campo che racchiude cognome e
nome... quindi forse questa potrebbe andare... ci dò un'occhiata!


Lo farò, grazie!


Il riferimento al codice cliente è importante per evitare omonimie. Carlo ti
ha risposto correttamente e non aver paura ad usare query varie. Come vuoi
fare tu vai a duplicare i riferimenti a quel nome e alla lunga risulta
superfluo.
Altra regoletta del quoting: lascia la parte del messaggio che si riferisce
al problema altrimenti chi legge questo post non sa di cosa stimao parlando


 superfluo.
Grazie ancora MA... quindi devo creare una query apposta per compilare il
form... ok! Se non ti scoccia e se hai tempo, mi faresti una lista passo per
passo da niubbo di quello che devo fare? Giusto per essere sicuro di aver
capito bene... Fai conto di essere al telefono con la nonnina che deve
mettere il timer al VHS... ;-)
Più vado avanti a scoprire Access, più mi accorgo di essere ignorante!


- Tabella anagrafica
- Tabella movimenti (a tutti i campi che ti interessano aggiungi un campo di
tipo numerico che chiami "ric_cod_cliente")
- Creati la relazione tra Anag. e Mov.
- Applica Integrita refernziale e spunta aggiornamenti ed eliminazione a
catena
- Creati una queri con tutti campi delle tue tabelle che ti interssano
(ovviamente fondamentale è ric_cod_cliente)
- creati la sottomaschera che ti serve puntando sulla query che ti sei
creato.
- Il controllo (nelle maschere e report si chiamano così) ric_cod_cliente è
una casella di testo; formato - cambia - casella combianta
- Dopo la conversione in casella combinata guardati le proprietà del
controllo (si attiva con quel foglietto con una mano sopra nella barra
strumenti) troverai che c' un rigo con origine riga (N:B: non origine
controllo che deve rimanere lo stesso): in pratica tu qui gli dici da dove
attingere i dati; fai fartire l'automposizione e noterai che l'ambiente è
uguale a quello della struttura query. Bene inserisci nella griglia
codice_cliente (Importante) e tutti i campi che ti possono aiutare ad
identificare il cliente). Conta i campi inseriti. Se per esempio hai
inserito i campi cod_cliente, denominazione, città, contatto, quando chiudi
questa "query" inserirai
numero di colonne: 4
largezza colonne (ti consiglio): ti consiglio di tarare come vuoi la
larghezza di ciascuna colonna ma 0 come grandezza del cod_cliente. Questo
perchè tu così farai una ricerca del cliente non in base al suo codice ma in
base alla denominazione. Access ti memorizzerà il codice ma ti mostrera la
denominazione. Setta larghezza elenco come la somma della larghezza delle
colonne.
Vai in visualizzazione maschera e dovrebbe essere ok.
Fammi sapere


 Alex
Ciao Alex, in aggiunta al suggerimento di MA sulle regole del NG
ti consiglio di verificare l'esistenza di altri Nick uguali, questo
non per polemica, ma solo per evitare equivoci.
Nel mio caso Alex è anche il mio Nick, e poichè io sono molto
ODIATO, rischieresti di riceverti tu gli insulti rivolti a me.....!
Per rispondere al tuo quesito devi sfruttare la proprietà Column
della tua ComboBox e su evento DopoAggiornameto inserire:
Me.txtBoxCodice=Me.Combo.Column(Numerocolonnacodice)
Ciao.
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Ciao e Grazie


La prima che hai detto
ciao MAssimiliano


 catena
Mi da questo errore: No unique index found for the referenced field of the
primary table.
Mi fermo qui per ora. Spero che tu abbia abbastanza pazienza per aiutarmi!


Allora, io ho provato ad inserirlo dove hai detto tu, mi dice:
Microsoft Access can't find the macro "Me." The macro (or it's group)
doesn't exist, or the macro is new but hasn't been saved. Note that when you
enter the macrogroupname.macronome syntax in an argument, you must specify
the name the macro's macro group was last saved under...

 Mi fermo qui per ora. Spero che tu abbia abbastanza pazienza per aiutarmi!
Dai che ce la facciamo
ciao



"The changes you requested (indicizzato - duplicati non ammessi) to the
table were not succesful because they would create duplicate value in the
index, primary key, or relationship. Change the data in the field or the
fields that contain duplicate data, remove the index, or redefine the index
to permit duplicate entries and try again"
ma mi prende in giro?
Premetto che la tabella anagrafica non ha un altri campi indicizzati ne una
chiave primaria...

 ha
scritto:

No ti sta dicendo che ci sono due codici clienti uguali.
E' proprio questo i problema che ti dicevo e x il quale ti consigliavo di
usare il contatore e riferirti a lui con un campo numerico nei movimenti



Grazie ancora, sei davvero utile! Ti tengo aggiornato sugli sviluppi

 Grazie ancora, sei davvero utile! Ti tengo aggiornato sugli sviluppi
ciao MAssimiliano



Ok... senti, potrebbe essere il fatto che un cliente non ha codice ad avere
creato l'errore?

 ha
scritto:

Per sgamarlo prova a lanciare una query di ricerca duplicati
ciao MAssimiliano
p.s. se tagli cosě diventa una cheat non un NG
lascia la parte di messaggio che serve



Hai ragione, solo che il mio newsserver non mi consente di scrivere meno di
quello che quoto.... :-(

 ODIATO, rischieresti di riceverti tu gli insulti rivolti a me.....!
pfui, millantatore
cmq, ritieniti insultato
--
a.cara 
Togli qualcosa dall'email

Ho adattato questo  codice  di Roberto, copiandolo dal Sito comune.
La spiegazione è ,come dicevamo gli antichi, di una logica cristallina.
Eppure, come al solito qualcosa mi sfugge !
Sto cercando di " aggiungere un record alla tabella che è origine riga di
una casella combinata senza usare una maschera" ,
ma ricevo l'errore
errore di run-time 13
Tipo non corrispondente.
Il codice si blocca , a
Set miorst = CurrentDb.OpenRecordset("CapitoliMIS")
L'unica differenza rispetto all'esempio di Roberto è che la mia tabella
CapitoliMIS ha come :
chiave primaria il campo "Capitolo" tipo dati Testo
è il campo "ID" tipo dati  Contatore
p.s.
ho attivato in strumenti/riferimenti il collegamento alla libreria DAO e
anche ADO !
la Tabella CapitoliMIS è una tabella collegata, e utilizzo i valori in molte
query.
(è questo il problema ? )
Questo è il codice:
Private Sub CasellaCombinata384_NotInList(NewData As String, Response As
Integer)
   Dim IntNuovo As Integer, strTitolo As String
   Dim IntFinestraMsg As Integer, strMsg As String
   strTitolo = "Capitolo digitato non in elenco"
   strMsg = "Vuoi aggiungere" & Chr(13) & Chr(10) & NewData & Chr(13) &
Chr(10) & "in elenco?"
   IntFinestraMsg = vbYesNo + vbQuestion
   IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo)
   If IntNuovo = vbYes Then
       Dim miorst As Recordset
       Set miorst = CurrentDb.OpenRecordset("CapitoliMIS")
       miorst.AddNew
       miorst!Capitolo = NewData
       Me![CasellaCombinata384] = miorst![Capitolo]
       miorst.Update
       miorst.Close
       strTitolo = "Inserimento nuovo Capitolo in elenco"
       strMsg = "Inserimento in elenco di" & Chr(13) & Chr(10) & NewData &
Chr(13) & Chr(10) & "con successo"
       IntFinestraMsg = vbOKOnly + vbExclamation
       IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo)
       Response = acDataErrAdded
       Me![CasellaCombinata384].Requery
   Else
       strTitolo = "Nome del Capitolo errato"
       strMsg = NewData & " non è in elenco." & Chr(13) & Chr(10) &
"Seleziona un Capitolo dall'elenco"
       IntFinestraMsg = vbOKOnly + vbExclamation
       IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo)
       Response = acDataErrContinue
       Me![CasellaCombinata384].Undo
   End If
End Sub
grazie in Anticipo !!!!

 ha scritto nel messaggio
news:bbk78i$abm1i$1...@ID-24065.news.dfncis.de...

Come hai notato la routine di cui sopra fa riferimento alla libreria
Microsoft DAO quindi, se usi A2000 o A2002, devi aggiungere ai riferimenti
del tuo database quelli a tale libreria; ma questo non è sufficiente, devi
aggiungere tali riferimenti in maniera tale che nell'elenco dei riferimenti
essi PRECEDANO e non seguano i riferimenti alla libreria Microsoft ADO; se
non lo fai è come se non avessi aggiunto i riferimenti alla libreria
Microsoft DAO: Access ti segnalerà lo stesso errore 13.
Invece di intervenire sull'ordine dei riferimenti delle due librerie puoi
provare a sostituire la riga di codice VBA:
Dim miorst As Recordset
con la seguente riga di codice VBA:
Dim miorst As DAO.Recordset
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

funziona a meraviglia !
Mille grazie !