PDA

Visualizza versione completa : Acces



Enrico170780
05-08-2003, 11.36.47
Non so se sia il forum giusto ma mi pareva il più consono, avrei bisogno di una mano per realizzare un paio di funzioni elementari in access.

Io ho un database che contiene un elenco di ditte (una dozzina di campi dall'indirizzo alla ragione sociale etc) e ho bisogno di poter cercare, tramite una maschera, una ditta (un record) che contenga nel nome una certa stringa (solo nel nome, ad esempio se cerco "enrico" non voglio trovare la ditta ABC in via Enrico Fermi); l'ideale sarebbe una maschera in cui scrivere la stringa da cercare e poi tramite un comodo bottone posizionarsi sul primo record che contiene la stringa cercata nel campo nome (eventuale miglioria poter decidere in che campo cercare). Ho provato a pastrocchiare un po con trova.record sia mettendolo in un modulino associato al click di un pulsante sia inuna macro ma senza ottenere risultati degni di nota.

Altro problema: mi servirebbe poter settare un valore comune a tutti i record in un campo (ad esempio "resettare" un campo a 0) niente metodo manuale perchè i records sono >500)

Ultima cosa poi non rompo più: mi servirebbe poter estrarre i dati dell'indirzzo nome cap etc e scriverli in maniera tale integrarli in una lettera prestabilita; anche qui niente cut & paste dato l'elevato numero di records e niente etichette perchè mi serve stampare su un modello prestabilito (che è un .dot).

Scusate la lunghezza del post e la probabile poca attinenza col il forum ma se qualcuno fosse in grado di darmi qualche dritta mi aiuterebbe immensamente :)

follettomalefico
05-08-2003, 12.42.04
Alor, vediamo:


1.
Questo non lo so di certo come funziona... penso tu abbia già provato a creare una mask e collegarla con il database... se non funziona penso tu debba realizzare qualcosa in VBA... ma mmm non saprei di preciso che consigliarti...


2.
Per settare una valore comune, intendi ad una intera colonna? Se è questo il caso puoi utilizzare una query SQL di Update :)

UPDATE Table SET Field1='value1', Field2='value2', Field3=100 WHERE Field4='value4';

3.
Penso qui tu possa utilizzare il report di Access... oppure prelevare i dati da Word, mi pare sia possibile... ma anche qui non so dirti di preciso...

Enrico170780
05-08-2003, 13.22.58
Grazie :)
LA 2 è perfettamente risolta ;)
Per la 1 la mia impressione è che stia sbagliando qualche cosa di base perchè mi sembra una funzionalità abbastanza comune e che dovrebbe essere di facile realizzazione.

Knudson
05-08-2003, 15.06.48
select [campi]
from [tabelle]
where [join]
and ditta.nome like [inserisci la stringa];

se ho bene capito quello che hai chiesto

follettomalefico
05-08-2003, 15.55.46
mi pare:

LIKE '%stringa%'

i % contano come gli * in sinstassi dos/nix :)

Enrico170780
05-08-2003, 15.59.21
Originally posted by Knudson
select [campi]
from [tabelle]
where [join]
and ditta.nome like [inserisci la stringa];

se ho bene capito quello che hai chiesto

Grazie per gli "indizi" :)
Ora qualche precisazione:
mi sfugge "where [join]" che ci devo mettere :)?

e poi una domanda più sostanziale questo pezzo di SQL (almeno credo dalla sintassi) posso assegnarlo ad una macro in modo da attivarlo tramite pulsante? oppure mi conviene fare una query ed assegnare l'esecuzione della query stessa ad un pulsante?

ancora una conferma, con like trovo anche dei match parziali? supporta le wildcard?

follettomalefico
05-08-2003, 17.12.49
"[join]" effettivamente non so che intenda. In pratica è quello che deve trovare (where, dove). Cioè quali righe saranno modificate.

Come ho scritto sopra poi, devi usare % come fosse * :)

Enrico170780
05-08-2003, 17.30.37
ok, per gli * sry per la domanda ma quando ho postato il msg precedente non avevo ancora letto la tua precisazione Foll (in ufficio tra click su rispondi e effettivo invio del msg possono trascorrere 20 min :p)

Mi rimangono ancora dei dubbi sul where ma farò qualche prova :) e sull'effettiva implementazione delle righe di codice (in pratica dove "metterle").

Il mio obiettivo sarebbe la creazione di un text box e un pulsante in una maschera ; alla pressione del pulsante la maschera deve evidenziare come record selezionato il primo in cui compaia la stringa immessa nel textbox ed eventualmente alla pressione successiva spostarmi al record successivo in cui compaia la suddetta stringa.

Tu parli di modificare ma in questo caso la query non deve modificare alcunchè, dovrebbe solo cercare il primo record che soddisfi un criterio (imputabile da utente)

follettomalefico
05-08-2003, 18.36.59
Sorry, mi rifacevo all'update. Il WHERE indica quali righe saranno "condizionate" dall'operazione SQL.

Cioè, ad esempio:
...WHERE id = 2;

la query condizionerà tutti i campi con id = 2 :)

Knudson
05-08-2003, 21.07.21
per join intendevo le eventuali condizioni di congiunzione

Enrico170780
12-08-2003, 13.12.47
Significativi passi avanti :)
Grazie per l'aiuto fornito finalmente qualcosa inizia a funzionare ma naturalmente mi trovo di fronte ad altri imprevisti e, pur conscio del periodo ferragostano, li esporrò qui di seguito:

Mi servirebbe stampare un report tabellare ma con la griglia (come excel insomma) per facilitare la scorsa di un record dato l'elevato numero di campi, come posso fare? non ditemi di mettere i bordi ad ogni singolo campo perchè ci ho già provato e viene abbastanza male (dove due bordi si sovrappongono lo spessore risulta doppio con sgradevole effetto).

Mi servirebbe anche poter stampare, sempre nel suddetto record, una "porzione di campo", mi spiego meglio: io ho un campo in cui sono riportate tutte le numerose certificazioni che possiede un azienda nella forma certificazione1; certificazione2; ... certificazionen; , mi servirebbe poter "dire al report" o alla query su cui si base il report (meglio :)) di tutto quel campo (estremamente lungo anche decine e decine di righe) estraimi e stampami solo la certificazione/i che mi interessa in questo momento.

Se qcuno non è in ferie e proprio non ha niente da fare in questo caldo 12 agosto apprezzerei molto un aiuto :)
Grazie

Knudson
12-08-2003, 23.21.46
ehm non ho capito :notooth:

magari mi fai un disegnino di come deve venire? :)

Enrico170780
13-08-2003, 11.28.16
Per i bordi ho risolto rinunciando al comodo drag & drop dellecaselle di testo per ricorrere alla precisione del posizionamento tramite immissione di coordinate con 3 decimali :p
Rimane irrisolto il secondo problema:
Io ho un elenco di ditte con tanti campi (ragione sociale indirizzo fax P-iva etc) uno di questi campi riporta tutte le certificazioni che ha questa società nella forma certificazione1; certificazione2; ... certificazionen. le certificazioni possono essere svariate decine ed io vorrei che in un report fosse possibile stampare solo una certificazione ad esempio di tutta la lista stampa solo la stringa OS30 (se c'è ovviamente :p).

Creo un report che mi seleziona tutte le aziende che hanno la suddetta certificazione OS30 e mi interessa che nel campo certificazione compaia oltre a OS30 anche OS28 (se c'è) ma non tutte le altre eventuali certificazioni. E' possibile :)?

Altra domandina fresca fresca: ho risolto il problema della ricerca anche parziale con un combo box che fa pressochè in automatico tutto quello che volevo io :) ora mi sorge però una domanda: il codice aasociato al combo.update è questo

Sub CasellaCombinata34_AfterUpdate()
' Trova il record corrispondente al controllo
Me.RecordsetClone.FindFirst "[ID] = " & Me![CasellaCombinata34]
Me.Bookmark = Me.RecordsetClone.Bookmark
End Sub

Il funzionamento mi è chiaro (sarebbe grave il contrario :p) ma mi sfugge il motivo dell'accodamento della stringa "[ID]="? qualcuno può illuminarmi per favore :)
Grazie

Knudson
13-08-2003, 22.20.29
per quanto riguarda os28 e os30 per capirci :D :

bhe dipende, se queste certificazioni sono tutte IDENTICHE come formato (es sono solo OS1, OS2, OS3, OS4...ecc) FORSE puoi direttamente dirgli x < y ma nn sono sicuro..al limite ti fai una funzione che ti estrapola il numero...ah, fai una query che ti faccia questa selezione eh :)

per la nuova domanda, boh :D