|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
![]() |
#1 |
Junior Member
Registrato: 20-08-2000
Messaggi: 124
![]() |
solo che sorgono due prob 1--il testo io voglio cercarlo in + di un campo e mi secca riscrivere i criteri per ogni campo ...non c'è un modo per fargli applicare i criteri a più campi insieme tutto in una volta? 2--io vorrei che all'apertura della query mi venisse chiesta la variabile (ovvero il testo che voglio cercare) senza cambiare manualmente i criteri di volta in volta.... inoltre se ho un campo(colonna) e voglio selezionare SOLO una parte di valori e sostituirli non c'è un modo di poterlo fare? con MAIUSC seleziona il "range" senza problemi ma non mi fa immettere nessun valore..... sembra una cosa banale ma provateci vedrete che il programma vi farà agire solo una cella per volta impedendo la modifica del grupposelezionato ultima cosa vi posto la visualizzazione corrente della query SQL forse potete aiutarmi meglio SELECT Volumi.Artista, * FROM Volumi WHERE (((Volumi.Artista) Like "testodacercarevariabile*")) ORDER BY Volumi.Artista; ovviamente si deve cambiare opportunamente per fare andare bene i punti 1 e 2 sopra RAgazzi we prego datemi na mano è da giorni che ci perdo il sonno...se no almeno consigliatemi una buona guida all'access o all'SQL da consultare on line p.s io sto imparando ad usare access per poter avere in locale in database della mia collezione musicale...MySQL può fare la stessa cosa o non ha senso installarlo se non lo si usa come database-internet? Grazie a tutti |
![]() |
![]() |
![]() |
#2 |
Hero Member
Registrato: 09-04-2001
Loc.: Padova
Messaggi: 1.090
![]() |
Per usare il like bisogna specificarlo campo per campo, ma scritta la query una volta non devi cambiare più niente. Non è Access, è l'SQL che è così!
SELECT * FROM Volumi WHERE Volumi.Artista LIKE [Testo da cercare] or Volumi.AltroCampo LIKE [Testo da cercare] etc... Se tu lanci la query lui ti fa uscire una finestra dove richiede Testo da cercare, tu immetti Pippo* e la tua ricerca dovrebbe funzionare senza chiedere altro e senza dover modificare la query a mano ogni volta. Ciao |
![]() |
![]() |
![]() |
#3 |
Junior Member
Registrato: 20-08-2000
Messaggi: 124
![]() |
badmood ti ringrazio veramente tanto era da tempo che aspettavo una risposta..come dici tu la cosa funziona alla grande
![]() ti disturbo se possibile ancora per qualche domanda se ho un campo(colonna) e voglio selezionare SOLO una parte di valori e sostituirli non c'è un modo di poterlo fare? con MAIUSC seleziona il "range" senza problemi ma non mi fa immettere nessun valore..... sembra una cosa banale ma provateci vedrete che il programma vi farà agire solo una cella per volta impedendo la modifica del grupposelezionato sembra na cosa banale eppure...sei sicuro non ci sia un modo per farlo? di nuovo mille grazie davvero di cuore ![]() |
![]() |
![]() |
![]() |
#4 |
Hero Member
Registrato: 09-04-2001
Loc.: Padova
Messaggi: 1.090
![]() |
Hai due possibilità: se i campi sono presenti su record consecutivi, la pressione di ctrl + ' (apice) ti farà copiare il valore dello stesso campo del record precedente. Questo ovviamente se stai visualizzando i dati in formato tabellare.
Altrimenti puoi sempre fare UPDATE tabella SET tabella.campo=valore WHERE tabella.campo_di_confronto=valore_di_confronto; del tipo UPDATE tblNominativi set tblNominativi.Nome = "Sergio" WHERE tblNominativi.Nome = "Sargio"; tanto per fare un esempio. Se non è quello che volevi fammi sapere. Ciao |
![]() |
![]() |
![]() |
#5 |
Junior Member
Registrato: 20-08-2000
Messaggi: 124
![]() |
![]() We ecco una foto per farti capire quello che vorrei fare...le celle della selezione dovrebbero assumere lo stesso valore contemporaneamente alla mia immissione del valore...deriva dal fatto che importo da un file di testo e mi tocca una volta importata la prima colonna/campo metterne una seconda col valore che voglio io...ma è fatta di moltissimi record non posso scriverli uno per uno!!! P.s ho visto che sei davvero bravo coll'SQL dove posso documentarmi anchio per questo linguaggio? si può online? p.p.s secondo te una volta fatto il database potrei farlo funzionare in locale come fosse un sito (in locale quindi su una cartella nell'hdd) in modo da dare questa collezione musicale ad altre persone che potrebbero consultarla? è come avviene con i siti web (asp+ mysql per esempio..)ma ovviamente se non hai tempo per spiegare il tutto capisco e ti ringazio cmq delle risposte precedenti...(credo nascano problemi di parser?..non so) grazie ancora [Edited by XanTriX on 02-08-2001 at 01:55] |
![]() |
![]() |
![]() |
#6 |
Hero Member
Registrato: 09-04-2001
Loc.: Padova
Messaggi: 1.090
![]() |
Non mi compare la foto, eventualmente spediscimela via mail.
Per quanto riguarda la pubblicazione, va bene anche Access con ASP. Puoi gestirlo con il Personal Web Server presente nel CD di Windows 98 oppure con vWebServer (freeware). Una volta vista la foto ti risponderò in modo più completo. Ciao |
![]() |
![]() |
![]() |
#7 |
Junior Member
Registrato: 20-08-2000
Messaggi: 124
![]() |
we carissimo badmood allora ri posto l'immagine qua sotto
![]() cmq sono riuscito a risolvere questo prob con excel dove per fare ciò basta andare nell'angolo destro e scorrere verso il basso o l'alto e tutto è fatto!! peccato che in access non ci sia sto stesso fatto! cmq ho importato la tabella da excel ed è andata bene solo che mi toccherà fare questo lavoro di importazione sempre se non ce un modo in access!! Altra cosa ..seguendo le tue info ho fatto la query Ricerca testo e funziona ti posto sotto il codice sql SELECT * FROM Volumi WHERE (((Volumi.Artista) Like [Testo da cercare])) OR (((Volumi.TitoloAlbum) Like [Testo da cercare])) ORDER BY Volumi.Artista, Volumi.TitoloAlbum; Solo che per cercare il testo parziale su i campi lo devo racchiudere tra *testodacercare* è va da DIO!! perfetto senza problemi Solo che se voglio Cercare anche nel campo di un altra tabella Singoli che ha però solo un campo (singoli) la cosa si incasina e l'output della query non è corretto Centrano le relazioni? oppure è una questione di campi che non corrispondono? c'è un modo per integrare in UNA QUERY il risultato che per adesso funziona quindi solo su query separate? Come mai con and non funziona ma con or si ? ![]() Dove hai imparato l'SQL? esiste una qualche guida online completa? Se do la cartella con l'index.html e DB.mdb ad una persona che nel suo pc solo l'explorer (o cmq un browser) lui potra visionarlo? o deve avere il prog che mi dicevi installato?..il mio obiettivo era fare in modo che funzionasse in stand alone col semplice ausilio del browser dell'utente ![]() Grazie del tuo aiuto e scusa se continuo a chiedere ma se non hai tempo tranquillo oramai grazie a te il + è fatto queste sono rifiniture ![]() Grazie ancora di vero cuore Ultima modifica di XanTriX : 03-08-2001 alle ore 21.47.53 |
![]() |
![]() |
![]() |
#8 |
Hero Member
Registrato: 09-04-2001
Loc.: Padova
Messaggi: 1.090
![]() |
Ma perchè non usi appunto una query di aggiornamento in Access per cambiare i valori? Oppure anche due righe di codice, al limite...
il LIKE di Access funziona così: se metti *: *testodacercare* ti trova tutti i record che hanno nel campo da te specificato testodacercare in qualsiasi posizione testodacercare* trova tutti i record che nel campo specificato iniziano per testodacercare ?estodacercare* per esempio trova tutti i record che nel campo hanno un primo carattere qualsiasi, seguito da estodacercare Funziona con OR perché in questo modo uno solo dei campi deve contenere il valore. Se avessi messo AND tutti i campi dovevano contenere il valore di ricerca per essere estratti. Esempio: ... where a=1 and b=2 ... viene estratto il record solo se il campo a vale 1 e contemporaneamente b vale 2. ... where a=1 or b=2 ... viene estratto il record se il campo a vale 1 indipendentemente dal valore di b, oppure b vale 2, indipendentemente dal valore di a. Se ti servono controlli complessi tra più campi usa le parentesi: (a=1 and b>2) or c="pippo" estrae il record se a=1 e b>2 oppure, indipendentemente dal primo test, c vale "pippo". Se scrivi invece a=1 and (b>2 or c="pippo") bisogna che a sia uguale a 1 e contemporaneamente o b sia maggiore di 2 o c sia "pippo". L'SQL l'ho imparando facendo estrazioni di dati e scrivendo programmi... Trovi in giro anche delle guide in rete, prova a fare una ricerca con www.google.com inserendo per esempio learn sql syntax e guarda i risultati, alcuni possono esserti d'aiuto. Esempio relazioni: tabella a ProgressivoCD (chiave) Autore TitoloDisco tabella B ProgressivoCD (chiave) NumeroBrano (chiave) TitoloBrano (relazione uno a molti tra a e b con legame su ProgressivoCD, ma per la query non è obbligatoria) Ora tu scrivi la query: SELECT A.*, B.* FROM A INNER JOIN B ON A.ProgressivoCD = B.ProgressivoCD WHERE A.TitoloDisco Like [Testo da cercare] OR B.TitoloBrano Like [Testo da cercare]; Se dai la cartella con l'index.html e DB.mdb ad un'altra persona, devi installargli uno dei due programmi che ti avevo detto e configurarlo in modo che la tua directory sia la radice del sito. E' comunque una cosa semplicissima. A casa io uso ISS su Windows 2000, sul portatile ho vWebServer su Windows ME. Ma se hai problemi continua a postare, qualcuno di norma risponderà... Ciao |
![]() |
![]() |
![]() |
#9 |
Junior Member
Registrato: 20-08-2000
Messaggi: 124
![]() |
eeheh tutto chiarissimo caro badmood cmq riguardo il discorso che volevo fare io per la distribuzione del DB/collezione musicale era un lavoro che si definisce Stand Alone(che lavora da solo) come un tipico file exe che non ha bisogno di nulla per funzionare o cmq installa quello che serve da solo alla prima esecuzione (setup.exe
![]() ![]() Per quanto riguarda il codice che mi hai dato si riferisce al modo per integrare in UNA QUERY il risultato che per adesso funziona quindi solo su query separate? cmq adesso provo tutto Per la faccenda della foto ripeto ho risolto con excel...adesso che aggiornerò da access mettero il valore manualmente per ogni record anche se so gia che ogni volta che aggiorno 10 valori del campo artista e ttitoloalbum avranno lo stesso valore nel campo volume Artista Titoloalbum Volume pinco pallino cd40 mario rossi cd40 carlo bianchi cd40 ..... ......... cd 40 e cosi via ovviamente col la stessa funzione di excel la cosa non sarebbe stata un prob ...inoltre il mio non è un valore progressivo come puoi ben vedere quindi non posso mettere come valore di default un numero progressivo ![]() Cmq ancora sempre grazie di tutto il lavoro è già ottimo e comodo così tutto il restoè grasso che cola ![]() |
![]() |
![]() |
![]() |
#10 |
Hero Member
Registrato: 09-04-2001
Loc.: Padova
Messaggi: 1.090
![]() |
Sì, avevo capito il discorso dello stand alone ma il discorso di creare la pagina html dalla tabella in modo statico ti impedisce di aggiornare i dati al suo interno (se non editandola a mano) e ti obbliga a ricrearla ogni volta che i dati si aggiornano...
Sul sito www.webattack.com c'è un'applicazione scaricabile gratuitamente che, partendo da un database ti genera tutte le pagine statiche per navigarci sopra. Potrebbe essere la tua soluzione, visto che le pagine generate non necessitano ovviamente di server www per essere visualizzate. Però sono statiche! Per esempio io sto rifacendo il mio sito tramite pagine asp, in modo da non dover più scrivere pagine nuove ogni volta che aggiungo qualcosa. Non è ancora finito, ma lo sto testando. Qualche abbellimento grafico qua e là e una possibilità di gestione web degli inserimenti/modifiche e sarà pronto. Utilizza un database Access per i contenuti, e tramite una pagina sola è in grado di mostrare tutti i tipi di pagine che mi servono. Ovviamente ha bisogno di un server che gestisca asp. Le stesse cose puoi farle anche con MySQL e PHP, ma in ogni caso (asp o php) devi installare dei prodotti suo PC sul quale verranon caricate le pagine. Il codice che ti ho postato era quello per filtrare campi di tabelle diverse in un unica query, ovviamente su tabelle relazionate tra loro (tramite JOIN). Continuo invece a non capire il tuo problema relativo al campo volume. Le tue tabelle sono circa così? (semplificando al massimo) tblArtisti ---------- artCodice -> chiave artDescrizione tblDischi ---------- dscID -> chiave dscArtista dscTitolo dsc... tblTitoli --------- titID -> chiave titNrBrano -> chiave titTitolo tit... relazione uno a molti tra artCodice (1) e dscArtista (n) relazione uno a molti tra dscID (1) e titID (n) |
![]() |
![]() |
![]() |
#11 |
Junior Member
Registrato: 20-08-2000
Messaggi: 124
![]() |
Ciao Badmood allora come si chiama di preciso il programma che dicevi? cmq credo che quello che voglio fare io non si possa fare....forse dovrei lavorare con java di cui sono completamente a digiuno per far comunicare una normale pagina html con db.mdb in modo che se la persona a cui do la cartella, apre la pagina, trova un form di inserimento dati mette per esempio Stratovarius e la pagina html che si crea mostra solo i record relativi come avviene nei siti asp dei negozi per esempio....ovviamente chiederli di installare IIS per questo è troppo...cmq se mi dici il nome del programma vedo cosa riesco a fare
![]() Le mie tabelle sono queste tabella volumi nomecampo artista/album dati testo esempio.Stratovarius - Vision nomecampo volume dati testo es. cd 18 nomecampo genere dati testo es. powermetal* tabella singoli nomecampo singoli dati testo esempio vanessa-mae - the blessed spirits.mp3 nomecampo volume datitesto es. cd 40 Non ci sono chiavi primarie in nessuna tabella Vorrei poter cercare *testo* su entrambe le tabelle con una sola query ma non so bene neache cosa sono le relazioni e come usarle ![]() il problema del nomecampo volume sta nel fatto che ogni volta che un cd con mille canzoni in mp3 si aggiunge alla tabella singoli a me tocca mettere mille volte nel nomecampo volume cd XX e ovviamente ad uno a uno i vari nomicanzoni.mp3 mentre con un programma di nome directori printer io ottengo gia il file di testo con la lista bella pronta da copiare/incollare...basterebbe ripeto che la tabella di inserimento dati di access funzionasse come un foglio di lavoro excel e io non dovrei importare nulla da excel !! ![]() tuttavia forse adesso mi saprai dire dove sbagliavo.... p.s credi sia utile nel mio caso usare una chiave primaria che identifichi unicamente un record? puo mai esserci un gruppo con lo stesso nome e stesso album e stesso genere? Grazie ancora mille del tuo interessamento da fratello ,davvero grazie!!!!! ![]() ![]() |
![]() |
![]() |
![]() |
#12 |
Hero Member
Registrato: 09-04-2001
Loc.: Padova
Messaggi: 1.090
![]() |
Vista l'ora cercherò di essere sintetico...
Esiste il Personal Web Server della Microsoft. Veniva inserito sul CD di Windows 98 ma non installato di default. Se navighi nelle directori lo trovi, PWS o simili. Sul CD del Millennium non l'ho trovato, non so se sia un problema di compatibilità. Si tratta in pratica di un web server in grado di gestire pagine di tipo ASP. Di gratis e funzionante sotto Millennium trovi invece vWebServer, in grado di gestire pagine ASP ma non al 100% compatibile con le ASP Microsoft. Ha alcune cose in più e qualcosa in meno... Poi c'è Internet Information Server, o IIS, lo carichi tramite 'installazione applicazioni' di Windows 2000, è presente anche nella versione Professional. Di norma uso questo a casa per i miei test. Il programma che genera delle pagine statiche da un database si chiama QueryWeb, lo trovi su http://www.webattack.com/freeware/we...database.shtml ma nella stessa pagina c'è anche altra roba, magari ti può interessare. Sarebbe possibile anche una soluzione PHP + MySQL + Apache, ma al momento non li ho ancora utilizzati e quindi non potrei essere molto specifico. Relazioni: servono per definire che legami hanno due o più tabelle. Torniamo al mio esempio per chiarire: tblArtisti ---------- artCodice (progressivo)-> chiave artDescrizione (testo) tblDischi ---------- dscID (progressivo) -> chiave dscArtista (intero lungo) dscTitolo (testo) La tabella tblArtisti ha in comune il campo artCodice con il campo dscArtista. Il che significa che se li metti in relazione tra di loro per eseguire una query, sarà possibile definire un legame univoco tra i dati che ti consentirà di ottenere un risultato tipo questo: SELECT tblArtisti.Descrizione, tblDischi.dscTitolo FROM tblArtisti INNER JOIN tblDischi ON tblArtisti.artCodice = tblDischi.dscArtista WHERE tblArtisti.Descrizione Like [Testo da cercare] OR tblDischi.dscTitolo Like [Testo da cercare]; eseguendola ti chiederà [testo da cercare] se tu inserisci ad esempio: *badu* il risultato sarà Descrizione Titolo ----------------------------------------------------- Erykah Badu Baduizm Erykah Badu Baduizm Live ...etc... ovviamente se le relazioni sono definite in Access da menu Strumenti - Relazioni (aggiungendo le tabelle e trascinando il campo artCodice sopra a dscArtista, selezionando tipo di relazione uno a molti, che significa che un artista può avere più dischi. Se applichi l'integrità referenziale puoi decidere se vuoi o no poter cancellare/modificare dalla tabella artisti un codice in presenza di dischi a lui relativi, nel qual caso eventualmente sarà Access a cancellare per te i record nella tabella figlia alla cancellazione del padre così come ti modificherà il codice nei figli se lo cambi al padre mentre se decidi di applicarla ma senza aggiornamenti in cascata, ti avviserà di non poter cancellare un padre in presenza di figli), ogni volta che aggiungerai le tabelle per fare una query la relazione ti verrà già proposta e quindi non dovrai rifarla. Questo tipo di relazione si può espandere ai titoli dei brani, in modo che la tua query possa estrarti per esempio solo i titoli dei brani dell'artista che hai ricercato. tblTitoli --------- titID (intero lungo) -> chiave titNrBrano (intero) -> chiave titTitolo (testo) Dovrai relazionare titID con dscID in rapporto uno a molti... Tornando a te: volumi --------------- artista/album (testo) es. Stratovarius - Vision volume (testo) es. cd 18 genere (testo) es. powermetal* singoli -------------- singoli (testo) es. vanessa-mae - the blessed spirits.mp3 volume (testo) es. cd 40 Come chiave potresti mettere il campo volume (e un progressivo nella tabella singoli, che avrebbe quindi i campi volume - ID - singoli) e a quel punto relazionare le due tabelle. Puoi crearti una specifica di importazione in Access. Definendo le posizioni dei dati che ti interessano, puoi importare i dati da un file di testo e salvare l'importazione per usi futuri. Oppure con poche righe di VBA puoi farlo dal Basic di Access. E' molto facile. A quel punto avrai importato i dati del nuovo disco in una tabella di comodo (identica a quella singoli - ma inizialmente vuota, mi raccomando) e non avranno però il campo volume. Lo metti tu con update tabella_di_comodo set volume="CD 68" e poi, dopo aver inserito il record nella tabella volumi, una query di inserimento sulla tabella singoli dei campi corrispondenti con provenienza tabella di comodo: insert into singoli.singoli, singoli.volume select temp.singoli, temp.volume from temp (mi sembra sia così, ma puoi farlo da struttura). Il copia/incolla in Access funziona (ad esempio tra tabelle), ma lavorando a livello di record e non di cella, se tu copi un file di testo lui considera il contenuto come campo e non come campo suddiviso, ed è per quello che devi importare i dati con gli strumenti appositi o tramite codice. Puo esserci un gruppo con lo stesso nome, stesso album e stesso genere? Non penso, sarebbe lo stesso disco... e poi il campo volume non è comunque univoco? Ciao (anzi, buonanotte...) ronf... ronf... |
![]() |
![]() |
![]() |
#13 |
Junior Member
Registrato: 20-08-2000
Messaggi: 124
![]() |
allora caro badmood ho fatto la prova
e con l'esempio che hai fatto te tutto funziona a meraviglia solo che trasformare il mio semplice database in quello da te fatto come esempio sarebbe difficile ..-.. se ne osservi è di una semplicità disarmante e non ho capito come potrei fargli fare una cosa del genere....cmq il discorso tabella temporanea funziona a meraviglia...a sto punto mi rileggero mille volte il tuo esempio cercando una possbilità che non mi faccia fare troppe complicazioni..... p.s. ma non ce un altro modo di ottenere il risultato di 2 query magari in una nuova tabella ??? grazie cmq di tutto il tuo prezioso aiuto oramai rimane solo un problema dei mille che avevo allinizio ![]() ancora grazie ![]() se mi posso sdebitare in qualche modo dimmelo,,magari ti mando qualche cd musicale ![]() ciao |
![]() |
![]() |
![]() |
#14 |
Hero Member
Registrato: 09-04-2001
Loc.: Padova
Messaggi: 1.090
![]() |
Se vuoi caricarlo direttamente da basic... basterebbe richiamare la funzione passando come parametro il codice volume, ad es 'CD 68'. Ovviamente devi aggiustare un po' il codice secondo le tue esigenze, specialmente per la posizione contenente il titolo del brano. E non è detto che funzioni come l'ho scritto - tuo rischio e pericolo!
![]() ![]() Public Function ImportaLista(varVolume as variant) Dim varRecord Dim dbs As Database Dim rst As Recordset Set dbs = CurrentDb Titolo = "Caricamento nuova Lista Titoli" Messaggio = "Premendo < Sì > verrà caricata la nuova lista, proseguire?" Bottoni = vbYesNo + vbQuestion + vbDefaultButton2 Beep Risposta = MsgBox(Messaggio, Bottoni, Titolo) If Risposta = vbYes Then Set rst = dbs.OpenRecordset("Singoli") <- nome della tabella Access Open "c:\temp\lista.TXT" For Input As #1 <- nome file di testo contenente la lista Do While Not EOF(1) Line Input #1, varRecord rst.AddNew rst.Fields("Singoli") = Mid(varRecord, 1, 50) <- posizione iniziale, e quanti caratteri di lunghezza rst.Fields("Volume") = varVolume rst.Update Loop Close #1 rst.Close Set rst = Nothing End If Set dbs = Nothing End Function Le query possono riguardare tutte le tabelle che vuoi in contemporanea, e puoi anche fare una query su una query! E puoi inserire in una tabella il risultato. Ciao e grazie dei... ringraziamenti ![]() |
![]() |
![]() |
![]() |
#15 |
Junior Member
Registrato: 20-08-2000
Messaggi: 124
![]() |
ehhee che centra i ringraziamenti sono pochi
![]() cmq ora mi studio un altro poco i tuoi esempi..resta in zona ![]() |
![]() |
![]() |
![]() |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|