come creare stringa di testo da un portale
Moderatore: Moderatori
-
- Messaggi: 30
- Iscritto il: giovedì 18 ottobre 2007, 2:00
come creare stringa di testo da un portale
Ciao a tutti, sono nuovo del forum e sono anche parecchio imbranato, ecco il mio problema: ho creato un DB con FM 8.5 dev. con XP. Sono tre tabelle, nella tabella principale ho due portali per i dati essenziali delle altre due, ora devo esportare in word il contenuto del DB, ma per necessità editoriali devo, se possibile, creare una stringa di testo unica dai dati dei 4 campi dei portali, nel senso che ogni riga del portale deve essere allineata con le successive in una stringa unica di testo, non so' come fare, qualcuno mi può aiutare, grazie
-
- Messaggi: 9700
- Iscritto il: lunedì 1 dicembre 2003, 1:00
- Località: Roma
- Contatta:
-
- Messaggi: 30
- Iscritto il: giovedì 18 ottobre 2007, 2:00
Grazie per l'attenzione al mio problema, mi spiego meglio: Il portale è di 4 campi e di un numero di righe che varia da record a record, i dati sono "città", "sede", "anno", "pagine", tutti testo, il mio scopo è di estrarre i quattro campi e copiarli in un'altro campo componendoli in una stringa di testo che risulti così: "Milano, Galleria Schettini, 1982, p.32;" questo per la prima riga del portale seguita però dalle eventuali altre righe tutte disposte in sequenza orizzontale accodate alla prima. Sono riuscito con RicavaCampo ad ottenere la prima riga ma non riesco a far si che il loop mi copi anche le righe successive, i loop in realtà sono 2 perchè per ogni record della tabella principale ho un portale e quindi devo far passare tutti i record e tutti i portali e relative righe, non penso di essere molto chiaro, mi occupo di storia dell'arte e sono quasi a zero di informatica, il lavoro consiste in una schedatura di opere d'arte (la tabella principale) ognuna con due portali, uno per le esposizioni a cui è andata l'opera e l'altro con la bibliografia sull'opera, il problema è che siccome questo lavoro deve diventare un libro, le norme editoriali prevedono che trasformi tutto in word e in ogni singola scheda le esposizioni e la bibliografia vengano riportati come dicevo sopra, grazie ancora
eraldo
eraldo
-
- Messaggi: 30
- Iscritto il: giovedì 18 ottobre 2007, 2:00
Sempre io, il DB è composto da tre tabelle, "opere", "Esposizioni", "Bibliografia" tutte collegate, nel formato "opere" ho due portali che riportano i dati di "esposizioni" e "bibliografia", tutte e tre le tabelle devono essere esportate in XLS per essere usate da Word con stampa unione per diventare singole schede delle opere catalogate, solo che quando esporto in excell le righe del portale mi diventano dei record di excell separati obbligandomi ad un lavoro di editing lunghissimo, se riuscissi ad accorparle in un campo unico avrei risolto il problema e risparmiato molte ore di lavoro, mi rendo conto che è un problema strampalato ma non sono riuscito ad immaginare un modo diverso di risolverlo, probabilmente c'è un'errore metodologico nella prgettazione del DB, ma al punto in cui sono non posso ricominciare da capo
grazie ancora
Eraldo
grazie ancora
Eraldo
-
- Messaggi: 9700
- Iscritto il: lunedì 1 dicembre 2003, 1:00
- Località: Roma
- Contatta:
personalmente creerei due liste valori correlate (una per portale) e due campi calcolati (con la funzione lista() ) nella tabella principale per i contenuti.
in alternativa uno script con loop, qualcosa come:
vai al campo [portale1::campo]
loop
imposta variabile[$campo; $campo &P& portale1::campo]
vai al campo successivo [esci dopo l'ultimo]
end loop
defnisci campo [tabella principale::testo; $campo]
per ciascun portale.
.g.
in alternativa uno script con loop, qualcosa come:
vai al campo [portale1::campo]
loop
imposta variabile[$campo; $campo &P& portale1::campo]
vai al campo successivo [esci dopo l'ultimo]
end loop
defnisci campo [tabella principale::testo; $campo]
per ciascun portale.
.g.
-
- Messaggi: 30
- Iscritto il: giovedì 18 ottobre 2007, 2:00
Grazie ma forse se ti mostro lo script mi risulta più facile, lo script è questo:
vai al formato [ "visualizzazione dati" (Catalogo)]
vai a Record/Richiesta/Pagina [Primo]
Loop
Vai all'Oggetto [Nome oggetto: Catalogo::esposizioni]
Inserisci risultato calcolato [seleziona; Catalogo::esposizioni breve; RicavaCampo ("Esposizioni::città") & RicavaCampo ("Esposizioni::anno") & RicavaCampo ("Esposizioni::pagina") & ";"
Vai alla riga del portale [Seleziona; Successivo; Esci dopo l'ultimo]
Vai a Record/Richiesta/Pagina [Successivo; Esci dopo l'ultimo]
End Loop
Con questo io mi trovo copiata correttamente la prima riga del portale "Esposizioni" in "esposizioni breve" per tutti i record del DB ma non mi copia le righe successive, mi basterebbe ottenere che mi copi tutte le righe e il mio problema sarebbe risolto
grazie
ER
vai al formato [ "visualizzazione dati" (Catalogo)]
vai a Record/Richiesta/Pagina [Primo]
Loop
Vai all'Oggetto [Nome oggetto: Catalogo::esposizioni]
Inserisci risultato calcolato [seleziona; Catalogo::esposizioni breve; RicavaCampo ("Esposizioni::città") & RicavaCampo ("Esposizioni::anno") & RicavaCampo ("Esposizioni::pagina") & ";"
Vai alla riga del portale [Seleziona; Successivo; Esci dopo l'ultimo]
Vai a Record/Richiesta/Pagina [Successivo; Esci dopo l'ultimo]
End Loop
Con questo io mi trovo copiata correttamente la prima riga del portale "Esposizioni" in "esposizioni breve" per tutti i record del DB ma non mi copia le righe successive, mi basterebbe ottenere che mi copi tutte le righe e il mio problema sarebbe risolto
grazie
ER
-
- Messaggi: 9700
- Iscritto il: lunedì 1 dicembre 2003, 1:00
- Località: Roma
- Contatta:
puoi utilizzare il mio script. oppure:
ricava campo sono inutili
vai al campo in luogo di vai all'oggetto
definisci campo in luogo di inserisci risultato calcolato
ma soprattutto: così ti ritrovi solo l'ultima riga.
se vuoi più di una riga devi utilizzare le variabili come le ho utilizzate io, oppure un globale.
fossi in te, userei i campi calcolati e lista.
.g.
ricava campo sono inutili
vai al campo in luogo di vai all'oggetto
definisci campo in luogo di inserisci risultato calcolato
ma soprattutto: così ti ritrovi solo l'ultima riga.
se vuoi più di una riga devi utilizzare le variabili come le ho utilizzate io, oppure un globale.
fossi in te, userei i campi calcolati e lista.
.g.
-
- Messaggi: 30
- Iscritto il: giovedì 18 ottobre 2007, 2:00
ciao, scusa se ritorno sull'argomento ma lo avevo mollato per manifesta incapacità mia a comprendere le tue spiegazioni, ora mi ritrovo con lo stesso problema e non riesco a scrivere la formula della variabile, cosa significa nella formula "&P&" se la scrivo non me la accetta mi dice che non trova la tabella potresti spiegarmi bene come scriverla ponendo comestregatto ha scritto:personalmente creerei due liste valori correlate (una per portale) e due campi calcolati (con la funzione lista() ) nella tabella principale per i contenuti.
in alternativa uno script con loop, qualcosa come:
vai al campo [portale1::campo]
loop
imposta variabile[$campo; $campo &P& portale1::campo]
vai al campo successivo [esci dopo l'ultimo]
end loop
defnisci campo [tabella principale::testo; $campo]
per ciascun portale.
.g.
esempio 4 campi del portale che sono : "città", "sede", "anno", "pagine", sono de coccio lo so ti ringrazio in anticipo
Eraldo
-
- Messaggi: 3616
- Iscritto il: sabato 7 febbraio 2004, 1:00
- Località: Roma
- Contatta:
-
- Messaggi: 30
- Iscritto il: giovedì 18 ottobre 2007, 2:00
non mi funziona, io ho bisogno di copiare il contenuto dei campi del portale e unirli in una stringa orizzontale dove per ogni record io abbia le voci del portale allineate da sinistra a destra nella stessa sequenza che ho nel portale, questo per ogni record e relativo portale con tutte le righe, la formula di stregatto mi produce ogni termine a capo dal precedente, e poi "vai al campo successivo [esci dopo l'ultimo]" come si indica "esci dopo l'ultimo"? nella voce non sono previste opzioniraybaudi ha scritto:stregatto ha scritto &P& per velocizzare la sua risposta, ma tu scrivi invece:stregatto ha scritto:imposta variabile[$campo; $campo &P& portale1::campo]
& ¶ &
dove ¶ è il simbolo del "ritorno a capo"
esempio il portale contiene 4 campi: città, sede, anno, pagine per un numero di righe che cambia ad ogni record, io devo ottenere, nel caso ci siano due rige compilate:
"città , sede, anno, pagine; citta, sede, anno, pagine" questo deve accadere per ogni record