title: [Acc 97] crash di access all'apertura di un report

author: bande

text:
Ho una query di selezione che eseguita all'interna del QBE funziona
perfettamente.
Quando la metto come origine di un sottoreport, il report in
visualizzazione anteprima fa "crashare" access chiudendolo senza alcun
messaggio.
La query e' del tipo riga-fattura, con un prezzo riga soggetto a quattro
rincari successivi passando attraverso prezzo_riga_1 prezzo_riga_2
prezzo_riga_3 ed infine  prezzo_riga. In aggiunta calcolo il totale_riga
come prezzo_riga * quantita.
La cosa incredibile e' che se visualizzo soltanto il totale_riga o il
prezzo_riga il report funziona ma se compaiono entrambi, come e' giusto,
access "crasha".
Il crash si verifica anche se visualizza il prezzo_riga ed in un altro
controllo calcolato (prezzo_riga*1) oppure (prezzo_riga+1).
E' un mistero questo comportamento visto che la query non presenta
operazione particolarmente complesse.
Cosa mi consigliate?
Ciao
--
Andrea
--
Posted via Mailgate.ORG Server -
http://www.Mailgate.ORG


title: Due Roberto

author: Roberto

text:
Ora siamo in due a qualificarsi come Roberto.
Speriamo che non nascano problemi.
Roberto (primo)


title: Due Roberto

author: Giovanni Albertone

text:
On Sat, 25 Mar 2000 12:00:15 GMT, "Roberto" <
r.ma...@libero.it
>
wrote:
>Ora siamo in due a qualificarsi come Roberto.
Con una firma cosi' originale volevi pure il copyright?
:-)
--
Ciao,
Giovanni


title: Due Roberto

text:
In article <jT1D4.10636$
pn3.1...@news.infostrada.it
>,
r.ma...@libero.it

says...
>
>Ora siamo in due a qualificarsi come Roberto.
>Speriamo che non nascano problemi.
>
>Roberto (primo)
>
Allora siamo in tre. Peccato! Ho mollato per un pò e mi ritrovo ad essere
"terzo"! SIGH!
R3


title: ? Filtro ?

author: GhanaWay

text:
Cia a Tutti,
Vi chiedo un consiglio (... meglio, aiuto..).... diciamo due.
1. Ho una maschera "Materie Prime" nella quale è inserita una
Suttomaschera"NomeConvenzionale". La sottomaschera è costituita sa due
campi: "NomeProprio" e "NomeUfficiale", e mi definisce la correlazione tra
un nome da me inventato e quello ufficiale di un alimento. Un esempio,
aprendo la maschera "MateriePrime" compare :
======================
|               Cavolo                      |       <- record di
MateriePrime
|                                                |
|======================
|Cavolo   | Cavolino di Bruxelles |  <- Campi di NomeConvenzionale: Records:
"NomeProprio" / "NomeUfficiale" rispettivamente.
======================
Le tabelle sottostanti alle due maschere sono collegate 1->molti.
Ora, avendo inserito la correlazione in "NomeConvenzionale", voglio che,
attraverso un pulsante sulla maschera, mi si apra una seconda maschera che
mi visualizzi le specifiche caratteriali di "NomeUfficiale", contenute in
una terza tabella "UfficialeDeposito" ; caratteristiche già inserite quali :
pezzatura, prezzo, forma ,etc....
Esiste un sistema (filtro o quant'altro) per implementare questa semplice
necessità ? Come ?
Grazie


title: ? Filtro ?

author: Sergio MAZZA

text:
"GhanaWay" <
buff...@virgilio.it
> ha scritto nel messaggio
news:424cf45e$0$18169$5fc...@news.tiscali.it...

Utilizzare il parametro "CondizioneWhere" del metodo OpenForm (vedi help)...
Ciao.
--
Sergio MAZZA


title: ? Filtro ?

text:
Grazie , ho risolto istruendo una query su Nomeconvenzionale,.... e
semplicemente funziona.
"Sergio MAZZA" <
sergi...@tiscali.it
> ha scritto nel messaggio
news:d2itpo$n6s$1...@canarie.caspur.it...



title: ? Filtro ?

text:
"GhanaWay" <
buff...@virgilio.it
> ha scritto nel messaggio
news:424d087d$0$18149$5fc...@news.tiscali.it...
> Grazie , ho risolto istruendo una query su Nomeconvenzionale,.... e
> semplicemente funziona.
(regola di questo NG) Ok, ma scrivi alla fine del testo del messaggio
precedente, come faccio io; grazie.
Ciao.
--
Sergio MAZZA


title: ? Filtro ?

text:
Sorry..... OPPS !!!
"Sergio MAZZA" <
sergi...@tiscali.it
> ha scritto nel messaggio
news:d2j2jt$pha$1...@canarie.caspur.it...

SORRY !!! ma mi viene automatico.
Ciao


title: ? Filtro ?

text:
"GhanaWay" <
buff...@virgilio.it
> ha scritto nel messaggio
news:424d202e$0$18150$5fc...@news.tiscali.it...
> Sorry..... OPPS !!!
>
> SORRY !!! ma mi viene automatico.
>
> Ciao
Dai sù! Un bel CTRL-End (prima) o un programmino tipo OE-quotefix e
risolvi...
Ciao.
--
Sergio MAZZA


title: scattare foto da tablet con windows 8.1

text:
ho trovato un tablet che monta windows 8.1 qualcuno di voi sa come potrei scattare una foto dalla fotocamera integrata del tablet senza far interventire l'operatore, per poi salvarla in un certo percorso?

grazie


title: scattare foto da tablet con windows 8.1

author: BFS

text:

prova qui

http://batchloaf.wordpress.com/2013/01/07/running-commandcam-from-excel-using-vba/

ciao
BFS


title: scollegare e ricollegare la query associata ad una maschera

text:
come si fà via codice a scollegare e ricollegare una query associata ad una
sottomaschera?
connect? altro?
grazie a tutti.


author: Dr. A.

text:
"@----- Pinco --@-- Pallino -----@" <
tos...@libero.it
> ha scritto nel
messaggio news:ZOqP8.29298$j65.7...@twister1.libero.it...

prova con:
me!sottomaschera.form.recordsource = "xxxxxxxxxxx"
ciao.


title: tenere traccia delle modifiche (tracking changes)

author: Ammammata

text:
sul gestionale (SAP Business One, SQL server) posso stabilire che una
tabella abbia il corrispondente file di log che mi traccia ogni modifica su
qualsiasi campo del record, in modo da sapere chi e quando, cosa c'era e
cosa c'è.

Per access ho trovato suggerimenti a partire da oltre 17 anni fa, tutti
basati su procedure non implementate di default dal motore del database, in
pratica ottenibili scrivendo codice VBA da abbinare agli eventi.

Domanda: stanno pensando di fare qualcosa di automatico anche in access
oppure non è nemmeno lontanamente previsto e se uno lo volesse dovrebbe
cambiare radicalmente passando ad un altro prodotto, p.e. il già citato
SQL?

Grazie

--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........


author: RobertoA

text:
Il 23/07/2020 12:27, Ammammata ha scritto:
> sul gestionale (SAP Business One, SQL server) posso stabilire che una
> tabella abbia il corrispondente file di log che mi traccia ogni modifica su
> qualsiasi campo del record, in modo da sapere chi e quando, cosa c'era e
> cosa c'è.
>
> Per access ho trovato suggerimenti a partire da oltre 17 anni fa, tutti
> basati su procedure non implementate di default dal motore del database, in
> pratica ottenibili scrivendo codice VBA da abbinare agli eventi.
>
> Domanda: stanno pensando di fare qualcosa di automatico anche in access
> oppure non è nemmeno lontanamente previsto e se uno lo volesse dovrebbe
> cambiare radicalmente passando ad un altro prodotto, p.e. il già citato
> SQL?
>
> Grazie
>

Credo sia difficile trovare qualcosa per Access
Piu' efficace e' realizzare delle stored procedure sul db server usato
per tracciare il record originale, quello modificato, il chi / quando
Se usassi Firebird ed avessi IbExpert come strumento di management,
avresti i comandi per creare in automatico le sp
Da vedere poi quanto questa funzionalita' impatta sulle prestazioni
percepite dall'utente programma


title: [maschera] "pescare" dati da una tabella, incolonnarli e stamparli. come?

author: kecco's

text:
Ciao a tutti!
ho una domanda che credo sia di semplice risposta ma non riesco a
trovare una via d'uscita.
Ho una tabella con un elenco di macchine e per ciascuna macchina, dei
valori.
Vorrei avere una maschera sulla quale l'utente possa "creare" una nuova
tabella pescando i dati dalla tabella di cui sopra, possa aggiungere la
macchina selezionata, ripetere l'operazione tot volte e poi alla fine
stampare (e magari salvare in qualche modo) la nuova tabella con le
macchine che ha appena aggiunto. Se prima di stampare sulla maschera si
potesse visualizzare anche ad esempio la somma dei prezzi delle
macchine sarebbe il massimo.
Credo che sia abb. facile, ma come detto ho parecchia confusione sul
come e cosa fare...
Grazie 1000 per l'aiuto!
F


text:
"kecco's" <
francesc...@gmail.com
> ha scritto nel messaggio news:1157121953.0...@p79g2000cwp.googlegroups.com...

Con una o più tabelle temporanee che riempi e svuoti ad ogni scelta dell'operatore...
Ciao.
P.S. Non è sia proprio, semplice semplice...
--
Sergio MAZZA


text:
Sergio MAZZA ha scritto:
>
> Con una o più tabelle temporanee che riempi e svuoti ad ogni scelta dell'operatore...
>
Grazie per la risposta Sergio!
allora, "pensavo" a una cosa de genere:
-tab1 elenco macchine con tutti i dati
-tab2  vuota ma con gli stessi campi
-maschera basata su tab 1 che prende i dati e li mette in tab2, fa
ripetere l'operazione, stampa un report bastao su tab2 e poi svuota
tab2 (magari se riesco ad archiviare il contenuto di tab2 per poi
rivederlo in un secondo momento sarebbe ottimo).
posso fare tutto con macro VB?
> Ciao.
>
> P.S. Non è sia proprio, semplice semplice...
> --
ecco appunto, olè... ;-(
Mi sapresti indicare dove posso trovare un esempio da cui trarre
ispirazione?
> Sergio MAZZA
grazie 1000!
F


text:
"kecco's" <
francesc...@gmail.com
> ha scritto nel messaggio
news:1157356179.6...@h48g2000cwc.googlegroups.com...
Grazie per la risposta Sergio!
allora, "pensavo" a una cosa de genere:
-tab1 elenco macchine con tutti i dati
-tab2  vuota ma con gli stessi campi
-maschera basata su tab 1 che prende i dati e li mette in tab2, fa
ripetere l'operazione, stampa un report bastao su tab2 e poi svuota
tab2 (magari se riesco ad archiviare il contenuto di tab2 per poi
rivederlo in un secondo momento sarebbe ottimo).
posso fare tutto con macro VB?
[risposta]
Con macro no; ma con VBA sicuramente.
ecco appunto, olè... ;-(
Mi sapresti indicare dove posso trovare un esempio da cui trarre
ispirazione?
[risposta]
Di esempi non credo ne esistano, dovresti trovare qualcuno che ha avuto la
tua stessa necessità e ha utilizzato questa soluzione. In effetti io ho
fatto una cosa del genere ma è personalizzata per quella persona/problema;
io posso indicarti in linea generale i passi per realizzarla.
grazie 1000!
F
[risposta]
La difficoltà più grande è la realizzazione della form che dovrà soddisfare
le esigenze dell'utente per la ricerca (leggi: criterio per il fitro dei
dati).
La form non necessariamente deve essere associata, anzi direi proprio di no;
una volta definiti i controlli e le funzionalità con una query di
cancellazione svuoti la tab2 e con una di accodamento la riempi...
Ciao.
--
Sergio MAZZA


text:
Sergio MAZZA ha scritto:
> La difficoltà più grande è la realizzazione della form che dovrà soddisfare
> le esigenze dell'utente per la ricerca (leggi: criterio per il fitro dei
> dati).
> La form non necessariamente deve essere associata, anzi direi proprio di no;
> una volta definiti i controlli e le funzionalità con una query di
> cancellazione svuoti la tab2 e con una di accodamento la riempi...
>
ho creato una maschera "Elenco macchine" che mi visualizza le macchine
come un elenco e tramite VBA, con caselle combinate e codice tipo
"SELECT ...FROM ..WHERE" riesco a ridurre l'elenco filtrando solo le
macchine che mi interessano, in base al tipo o altro.
Ora vorrei avere la possibilità, una volta selezionato il record che
mi interessa, di inserirlo in una tabella (che ha gli stessi campi
della tabella elenco macchine) e visualizzare questa tabella (Nuova
tab) nella maschera "Elenco macchine" (per es. alla fine). Come faccio,
creo una sottomaschera legata alla tabella "Nuova tab"e la inserisco
nella maschera "Elenco Macchine"? come faccio a dirgli di inserire
nella Nuova tab il record selezionato e visualizzarlo? E per
aggiungerne uno nuovo?
Spero di essermi spiegato,
Grazie 1000 per l'aiuto!!!
F


text:
"kecco's" <
francesc...@gmail.com
> ha scritto nel messaggio
news:1157366540.4...@i42g2000cwa.googlegroups.com...
ho creato una maschera "Elenco macchine" che mi visualizza le macchine
come un elenco e tramite VBA, con caselle combinate e codice tipo
"SELECT ...FROM ..WHERE" riesco a ridurre l'elenco filtrando solo le
macchine che mi interessano, in base al tipo o altro.
Ora vorrei avere la possibilità, una volta selezionato il record che
mi interessa, di inserirlo in una tabella (che ha gli stessi campi
della tabella elenco macchine) e visualizzare questa tabella (Nuova
tab) nella maschera "Elenco macchine" (per es. alla fine). Come faccio,
creo una sottomaschera legata alla tabella "Nuova tab"e la inserisco
nella maschera "Elenco Macchine"? come faccio a dirgli di inserire
nella Nuova tab il record selezionato e visualizzarlo? E per
aggiungerne uno nuovo?
Spero di essermi spiegato,
Grazie 1000 per l'aiuto!!!
F
[risposta]
Aspé! Se hai già filtrato la sottomaschera utilizzando il metodo
Filter/FilterOn e vuoi utilizzarlo per il report non fai altro che fare:
DoCmd.OpenReport "nomeReport",,,Me!nomeSottomaschera.Form.Filter
Ciao.
--
Sergio MAZZA


text:
Sergio MAZZA ha scritto:
> Aspé! Se hai già filtrato la sottomaschera utilizzando il metodo
> Filter/FilterOn e vuoi utilizzarlo per il report non fai altro che fare:
> DoCmd.OpenReport "nomeReport",,,Me!nomeSottomaschera.Form.Filter
>
Sergio, grazie per l'aiuto!
Allora mi spiego meglio:
ho una maschera  con cui faccio "una ricerca" tra i record di una
tabella...di 100 macchine filtro e, ad esempio, ne vedo 3 (18, 30, 58).
di queste tre vorrei selezionarne una  (es. macchina n18) e
passare/copiare/altro il record (cioè tutte le informazioni) in una
nuova tabella che vorrei anche visualizzare nella maschera principale
(uso una sottomaschera?) Questa tabella/maschera da vuota diventerà
con un record.
Poi vorrei ritornare all'elenco principale, fare una nuova ricerca
filtrando ancora le 100 macchine e riducendo il numero a 5 per es. Di
queste 5 sceglierne una (la 43) e con un tasto aggiungerla alla tabella
"ex vuota" che adesso ha 2 record (il 18 e il 43). E così via, per un
tot di volte. Quando ho finito di aggiungere i record, vorrei vedere ad
esempio la somma dei prezzi delle macchine che ho aggiunto in questa
tabella e poi stampare il tutto.
Pensavo di dover aggiungere una sottomaschera alla maschera principale
che mostri la tabella che da vuota si vede crescere con i record che
seleziono.
Poi poter stampare la sottomaschera.
Spero di essere stato più chiaro nello spigare quello che vorrei fare
:-)
Grazie 1000000!
F


text:
"kecco's" <
francesc...@gmail.com
> ha scritto nel messaggio
news:1157370809.4...@b28g2000cwb.googlegroups.com...
Sergio, grazie per l'aiuto!
Allora mi spiego meglio:
ho una maschera  con cui faccio "una ricerca" tra i record di una
tabella...di 100 macchine filtro e, ad esempio, ne vedo 3 (18, 30, 58).
di queste tre vorrei selezionarne una  (es. macchina n18) e
passare/copiare/altro il record (cioè tutte le informazioni) in una
nuova tabella che vorrei anche visualizzare nella maschera principale
(uso una sottomaschera?) Questa tabella/maschera da vuota diventerà
con un record.
Poi vorrei ritornare all'elenco principale, fare una nuova ricerca
filtrando ancora le 100 macchine e riducendo il numero a 5 per es. Di
queste 5 sceglierne una (la 43) e con un tasto aggiungerla alla tabella
"ex vuota" che adesso ha 2 record (il 18 e il 43). E così via, per un
tot di volte. Quando ho finito di aggiungere i record, vorrei vedere ad
esempio la somma dei prezzi delle macchine che ho aggiunto in questa
tabella e poi stampare il tutto.
Pensavo di dover aggiungere una sottomaschera alla maschera principale
che mostri la tabella che da vuota si vede crescere con i record che
seleziono.
Poi poter stampare la sottomaschera.
Spero di essere stato più chiaro nello spigare quello che vorrei fare
:-)
Grazie 1000000!
F
[risposta]
La situazione è un po' cambiata.
Se vuoi trasferire un record per volta puoi utilizzare l'evento "su doppio
clic" della (sotto)maschera, che si scatena quando fai doppio clic sul
selettore del record; quindi se hai inibito la visualizzazione ripristinala.
Nell'evento ci scrivi il codice VBA:
'---
Dim strSQL as String
'--> se vuoi svuotarla
strSQL = "Delete * From tab2"
DoCmd.RunSQL strSQL
'<--
'--> aggiungi record doppiocliccato
strSQL = "Insert Into tab2 Select tab1.* From Tab1 Where id=" & me!id
Docmd.RunSQL strSQL
'<--
'---
Altrimenti se vuoi selezionare più record utilizza l'esempio:
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=97
oppure con google:
http://groups.google.it/group/it.comp.appl.access/browse_thread/thread/a2168a402e461737/7d979433fcfaaf5f?lnk=st&q=ciclare+record+selezionati+group%3Ait.comp.appl.access&rnum=5&hl=it#7d979433fcfaaf5f
Ciao.
--
Sergio MAZZA


text:
Sergio MAZZA ha scritto:
> Se vuoi trasferire un record per volta puoi utilizzare l'evento "su doppio
> clic" della (sotto)maschera, che si scatena quando fai doppio clic sul
> selettore del record; quindi se hai inibito la visualizzazione ripristinala.
> Nell'evento ci scrivi il codice VBA:
> '---
> Dim strSQL as String
> '--> se vuoi svuotarla
> strSQL = "Delete * From tab2"
> DoCmd.RunSQL strSQL
> '<--
> '--> aggiungi record doppiocliccato
> strSQL = "Insert Into tab2 Select tab1.* From Tab1 Where id=" & me!id
> Docmd.RunSQL strSQL
> '<--
> '---
ottimo! grazie!
questo è il codice che mi serviva.
Lo uso non sul doppio click del record (non ho capito benissimo come lo
useresti tu; se parli di maschera o sotto maschera e cosa intendi per
inibire le visualizzazione) ma sul click di un pulsante: seleziono il
record e poi click sul pulsante "aggiungi" che aggiunge quel record
nella tab2.
Il problema adesso è che non riesco a fare in modo di vedere  "in real
time" questo cambiamento. La sottomaschera, (maschera inserita come
sottomaschera nella maschera principale dove c'è l'elenco e il
pulsante aggiungi) non si aggiorna. se chiudo e riapro vedo i record
aggiunti, ma vorrei riuscire ad ottenere la visualizzazione immediata
della modifica.
Hai qualche idea? cosa devo inserire nel codice del evento click del
pulsante aggiungi? come si fa il refresh?
Grazie!!!!
F



text:
"kecco's" <
francesc...@gmail.com
> ha scritto nel messaggio
news:1157383549.4...@e3g2000cwe.googlegroups.com...
ottimo! grazie!
questo č il codice che mi serviva.
Lo uso non sul doppio click del record (non ho capito benissimo come lo
useresti tu; se parli di maschera o sotto maschera e cosa intendi per
inibire le visualizzazione) ma sul click di un pulsante: seleziono il
record e poi click sul pulsante "aggiungi" che aggiunge quel record
nella tab2.
Il problema adesso č che non riesco a fare in modo di vedere  "in real
time" questo cambiamento. La sottomaschera, (maschera inserita come
sottomaschera nella maschera principale dove c'č l'elenco e il
pulsante aggiungi) non si aggiorna. se chiudo e riapro vedo i record
aggiunti, ma vorrei riuscire ad ottenere la visualizzazione immediata
della modifica.
Hai qualche idea? cosa devo inserire nel codice del evento click del
pulsante aggiungi? come si fa il refresh?
Grazie!!!!
F
[risposta]
Non devi fare il refresh ma il requery della origine dati della
sottomaschera (per info vedi help attivabile con ALT-F11 poi F1):
es.
...
Docmd.RunSQL strSQL
Me!nomeSottoMaschera.Form.Requery
Ciao.
--
Sergio MAZZA


text:
Sergio MAZZA ha scritto:
> Non devi fare il refresh ma il requery della origine dati della
> sottomaschera (per info vedi help attivabile con ALT-F11 poi F1):
> es.
> ...
> Docmd.RunSQL strSQL
> Me!nomeSottoMaschera.Form.Requery
>
> Ciao.
> --
> Sergio MAZZA
Ciao Sergio!
Eccomi ancora qui... ora, con il tuo aiuto ci sono riuscito. Grazie!
Mi manca ancora una cosa, che probabilmente è la più complessa.
Ora come ora, creo una nuova tabella e la visualizzo andando a prendere
i record da una
tabella già esistente (con un elenco macchine).
Queste operazioni le faccio su una maschera:
- scorro l'elenco delle macchine e nel caso le filtro per fare una
ricerca agevolata
- seleziono il record e tramite un pulsante aggiungi metto il nuovo
record nella tabella
---------------------------------
Dim strSQL As String
strSQL = "Insert Into [macchine per scheda vuota] Select [macchine per
scheda].* From [macchine per scheda] Where [N macchina esaminata]=" &
Me!macchina_esaminata
DoCmd.RunSQL strSQL
Me!dati_scheda.Form.Requery
-----------------------------
- posso anche togliere un record o cancellarli tutti per ricominciare
da capo (a proposito, perchè l'ID nella tabella nuova non ricomincia
da 1 dopo aver cancellato tutto ma parte da quello successivo? es.
metto tre record nella nuova tabella e me li mostra con Id 1,2 e 3...se
cancello tutto e ricomincio ad aggiungere parte da 4 etc...)
ora, vorrei poter "salvare" questa tabella. mi spiego:
- pesco i record dalla tabella elenco macchine e li metto nella tabella
vuota, visualizzo il tutto, in automatico mi calcola la somma dei
prezzi delle macchine scelte
- vorrei adesso stampare e salvare questo calcolo o meglio la tabella e
i calcoli, dandogli un nome in modo da poterla richiamare in un secondo
momento senza dover rifare la procedura.
hai qualche suggerimento?
grazie 1000!
F


text:
"kecco's" <
francesc...@gmail.com
> ha scritto nel messaggio
news:1157532062.1...@m73g2000cwd.googlegroups.com...


DoCmd.RunSQL strSQL
Me!dati_scheda.Form.Requery
-----------------------------

[risposta]
Nessuno ti vieta di poter cancellare i record; e secondo me in questa
tabella, se vuoi mantenere una integrità logica con i dati della tabella
originale, dovresti modificare il campo id da contatore a numerico intero
lungo. Così i valori contenuti fanno sempre riferimento alla tabella
originale.
(info) Il campo contatore, una volta che svuoti la tabella, per farlo
ripartire da 1 devi ricompattare l'mdb.
ora, vorrei poter "salvare" questa tabella. mi spiego:
- pesco i record dalla tabella elenco macchine e li metto nella tabella
vuota, visualizzo il tutto, in automatico mi calcola la somma dei
prezzi delle macchine scelte
- vorrei adesso stampare e salvare questo calcolo o meglio la tabella e
i calcoli, dandogli un nome in modo da poterla richiamare in un secondo
momento senza dover rifare la procedura.
hai qualche suggerimento?
[risposta]
L'utilizzo del Metodo CreateTableDef (vedi help) e query di accodamento...
grazie 1000!
F
[risposta]
Ciao.
--
Sergio MAZZA


text:
Sergio MAZZA ha scritto:
> L'utilizzo del Metodo CreateTableDef (vedi help) e query di accodamento...
>
ciao!
se ho capito un pò di quello che c'è scritto nell'help questo comando
crea una nuova tabella e io la userei di volta in volta.
poichè le "schede" da salvare/stampare sarebbero decine pensavo ad una
soluzione del genere:
sulla maschera di cui sopra, quella che mi permette di scegliere le
macchine e immetterle nella tabella vuota, vorrei avere la possibilità
di mandare queste macchine (i rispettivi record) in una tabella più
grande aggiungendo ai record in un campo apposito un numero e un nome
di riconoscimento.
Per capire: io scelgo le macchine (diciamo 6) dalla tabella elenco
macchine e le metto nella tabella vuota;voglio considerare questo
gruppo come il gruppo 1; vorrei poter copiare questi record in un'altra
tabella aggiungendo la voce "gruppo 1" in un apposito campo. Così poi,
la prossima serie di macchine che andrei a scegliere, le
caratterizzerei con "gruppo 2", e così via. In questo modo costruirei
una mega tabella con tutti i "gruppi" di macchine e potrei creare una
maschera/report che, con un filtro opportuno, mi mostri/stampi i
singoli gruppi. Come la vedi?
Adesso nella maschera in cui seleziono le macchine per crearne un
gruppo ho messo una casella di testo in cui l'utente può immettere il
nome del gruppo: come faccio a fare in modo di copiarele macchine (i
record selezionati) in una nuova tabella dando al campo "gruppo" il
valore che l'utente digita nella casella di testo?
Spero di essere stato chiaro e che sia fattibile!!!
Grazie per il supporto!
F


text:
"kecco's" <
francesc...@gmail.com
> ha scritto nel messaggio
news:1157640660.4...@m73g2000cwd.googlegroups.com...
ciao!
se ho capito un pň di quello che c'č scritto nell'help questo comando
crea una nuova tabella e io la userei di volta in volta.
[risposta]
Sě;
poichč le "schede" da salvare/stampare sarebbero decine pensavo ad una
soluzione del genere:
sulla maschera di cui sopra, quella che mi permette di scegliere le
macchine e immetterle nella tabella vuota, vorrei avere la possibilitŕ
di mandare queste macchine (i rispettivi record) in una tabella piů
grande aggiungendo ai record in un campo apposito un numero e un nome
di riconoscimento.
Per capire: io scelgo le macchine (diciamo 6) dalla tabella elenco
macchine e le metto nella tabella vuota;voglio considerare questo
gruppo come il gruppo 1; vorrei poter copiare questi record in un'altra
tabella aggiungendo la voce "gruppo 1" in un apposito campo. Cosě poi,
la prossima serie di macchine che andrei a scegliere, le
caratterizzerei con "gruppo 2", e cosě via. In questo modo costruirei
una mega tabella con tutti i "gruppi" di macchine e potrei creare una
maschera/report che, con un filtro opportuno, mi mostri/stampi i
singoli gruppi. Come la vedi?
[risposta]
non male;
Adesso nella maschera in cui seleziono le macchine per crearne un
gruppo ho messo una casella di testo in cui l'utente puň immettere il
nome del gruppo: come faccio a fare in modo di copiarele macchine (i
record selezionati) in una nuova tabella dando al campo "gruppo" il
valore che l'utente digita nella casella di testo?
[risposta]
stessa query di accodamento ma con in piů un campo calcolato:
es.
nomeGruppo: Forms!nomeForm!gruppo
Spero di essere stato chiaro e che sia fattibile!!!
Grazie per il supporto!
F
[risposta]
Ciao.
--
Sergio MAZZA


text:
Sergio MAZZA ha scritto:
> [risposta]
> stessa query di accodamento ma con in più un campo calcolato:
> es.
> nomeGruppo: Forms!nomeForm!gruppo
>
Uso questo codice ma non riesco ad ottenere nulla:
------------------------
strsql = "Insert Into [tab vuota] Select [tab elenco].*, Forms![tab
vuota]!Testo21 As numero From [tab elenco] Where [N macchina
esaminata]=" & Me!macchina_esaminata
DoCmd.RunSQL strsql
----------------------
quando esegue la query prima si apre una finestrelle che chiede di
immetere il valore del parametro Forms![tab vuota]!Testo21 e andando
avanti dà errore dicendo che  "il numero dei valori della query non
corrisponde a quello dei campi di destinazione"
non capisco...
F


text:
"kecco's" <
francesc...@gmail.com
> ha scritto nel messaggio
news:1157646023....@i42g2000cwa.googlegroups.com...
Uso questo codice ma non riesco ad ottenere nulla:
------------------------
strsql = "Insert Into [tab vuota] Select [tab elenco].*, Forms![tab
vuota]!Testo21 As numero From [tab elenco] Where [N macchina
esaminata]=" & Me!macchina_esaminata
DoCmd.RunSQL strsql
----------------------
[risposta]
Cambiala in:
...
strsql = "Insert Into [tab vuota] Select [tab elenco].*, '" & Forms![tab
vuota]!Testo21 & "' As numero From [tab elenco] Where [N macchina
esaminata]=" & Me!macchina_esaminata
...
Occhio alla Where, il campo è numerico?
quando esegue la query prima si apre una finestrelle che chiede di
immetere il valore del parametro Forms![tab vuota]!Testo21 e andando
avanti dà errore dicendo che  "il numero dei valori della query non
corrisponde a quello dei campi di destinazione"
non capisco...
F
[risposta]
Ciao.
--
Sergio MAZZA


text:
Sergio MAZZA ha scritto:
>
> Cambiala in:
> ...
> strsql = "Insert Into [tab vuota] Select [tab elenco].*, '" & Forms![tab
> vuota]!Testo21 & "' As numero From [tab elenco] Where [N macchina
> esaminata]=" & Me!macchina_esaminata
ciao!
con questo codice mi dice che la maschera [tab vuota] è impossibile da
trovare...in realtà la maschera esiste e viene usata come
sottomaschera nella maschera principale dove si scelgono le macchine da
aggiungere nella lista
> Occhio alla Where, il campo è numerico?
>
come mai? sì, il campo è numerico
> [risposta]
>
> Ciao.
> --
> Sergio MAZZA
Grazie 1000!
F


text:
kecco's ha scritto:
> Sergio MAZZA ha scritto:
>
> >
> > Cambiala in:
> > ...
> > strsql = "Insert Into [tab vuota] Select [tab elenco].*, '" & Forms![tab
> > vuota]!Testo21 & "' As numero From [tab elenco] Where [N macchina
> > esaminata]=" & Me!macchina_esaminata
>
> ciao!
> con questo codice mi dice che la maschera [tab vuota] è impossibile da
> trovare...in realtà la maschera esiste e viene usata come
> sottomaschera nella maschera principale dove si scelgono le macchine da
> aggiungere nella lista
>
credo che il problema fosse che la casella di testo Testo21 l'avevo
messa nella sottomaschera e il comando così non andava...ho fatto
un'altra casella di testo nella maschera principale e messo
'" & Forms![maschera principale]!Testo
così la prende ed è ok!!!
Sai mica dirmi eventualmente come si può fare la stessa cosa ma con
appunto una casella che si trova nella sottomaschera?
Grazie!!!
F


text:
"kecco's" <
francesc...@gmail.com
> ha scritto nel messaggio news:1157727253.0...@m73g2000cwd.googlegroups.com...
credo che il problema fosse che la casella di testo Testo21 l'avevo
messa nella sottomaschera e il comando cosě non andava...ho fatto
un'altra casella di testo nella maschera principale e messo
'" & Forms![maschera principale]!Testo
cosě la prende ed č ok!!!
Sai mica dirmi eventualmente come si puň fare la stessa cosa ma con
appunto una casella che si trova nella sottomaschera?
Grazie!!!
F
[risposta]
Mi sto un po' perdendo.
Il codice che hai inviato se viene eseguito in una maschera principale e vuoi far riferimento a dei controlli inseriti nella
sottomaschera devi indicare tutto il percorso:
es.
Me!nomeSottoMaschera!nomeControllo
se invece il codice lo esegui nella sottomaschera il riferimento č diretto:
es.
Me!nomeControllo
Ora tu cosa vuoi fare? E sopratutto, da dove lo devi fare?
Ciao.
--
Sergio MAZZA


text:
Sergio MAZZA ha scritto:
> Mi sto un po' perdendo.
> Il codice che hai inviato se viene eseguito in una maschera principale e vuoi far riferimento a dei controlli inseriti nella
> sottomaschera devi indicare tutto il percorso:
> es.
> Me!nomeSottoMaschera!nomeControllo
>
> se invece il codice lo esegui nella sottomaschera il riferimento è diretto:
> es.
> Me!nomeControllo
>
> Ora tu cosa vuoi fare? E sopratutto, da dove lo devi fare?
>
tutto ok! volevo riferirmi ad una casella di testo nella sottomaschera
e il codice che avevo era per una casella di testo della maschera
principale. Ho messo tutto a posto, adesso posso scegliere a quale
controllofare riferimento e in quale maschera (principale o
sottomaschera).
ora funziona, grazie infinite!!!
F


title: ChrW differenza tabella e ListView

author: Frank

text:
Ho provveduto ad inserire alcuni caratteri particolari in un font Arial
(dalla posizione 50001 alla posizione 50009).
Quando li digito in una casella di testo, li memorizzo in tabella e li
richiamo, tutto OK.
Quando invece passo tutto questo ad una ListView al posto dei caratteri
particolari mi compare il punto interrogativo (?).
Naturalmente ho provveduto a configurare il tipo di font sulla
ListView.
Come posso fare ?.


title: Replica Back End

text:
Salve a tutto il ng.
Può la replica del BE (Back End )ridurre il traffico di rete in un sistema
multiuser ?
Ho un serio problema con un applicativo FE (Front End) che esegue query
molto pesanti
su alcuni db FE in rete. Capita spesso che tutti gli utenti (max 5)
vengano bloccati anche il lettura quando uno di essi
esegue le query. Spostando in locale il BE tutto funziona
perfettamente. La mia intenzione è quella di provare a gestire
i vari BE replicandoli localmente, gestendo le variazioni
con la sincronizzazione.
Durante la sincronizzazione delle repliche in rete viene
trasferito l'intero BE o solo le differenze ?
Io ha fatto delle prove e sembra che il traffico si riduca
notevolmente ...
Qualcuno nel ng ha esperienza a riguardo ?
Grazie Mille
Sting70
--
Attilio Crippa
http://web.tiscalinet.it/atty70


title: Replica Back End

author: Ditta Cerri

text:
Sting70 dice:
> Salve a tutto il ng.
> Può la replica del BE (Back End )ridurre il traffico di rete in un sistema
> multiuser ?
>
> Ho un serio problema con un applicativo FE (Front End) che esegue query
> molto pesanti
> su alcuni db FE in rete. Capita spesso che tutti gli utenti (max 5)
> vengano bloccati anche il lettura quando uno di essi
> esegue le query. Spostando in locale il BE tutto funziona
> perfettamente. La mia intenzione è quella di provare a gestire
> i vari BE replicandoli localmente, gestendo le variazioni
> con la sincronizzazione.
Ad una prima occhiata non mi pare la soluzione ideale.
Due Domande:
Che rete usate? Avete Hub o Switch? 10 o100Mbit?
Hai valutato la possibilita' di passare, se proprio la situazione e' cosi'
drammatica, a qualcosa tipo SQL?
Ciao, Sib


title: Replica Back End

author: ElioP

text:
On Mon, 10 Jan 2000 17:04:32 +0100, "Sting70"
<NospaMa...@NoppaMtin.it> wrote:
>Ho un serio problema con un applicativo FE (Front End) che esegue query
>molto pesanti
>su alcuni db FE in rete. Capita spesso che tutti gli utenti (max 5)
>vengano bloccati anche il lettura quando uno di essi
>esegue le query. Spostando in locale il BE tutto funziona
>perfettamente. La mia intenzione è quella di provare a gestire
>i vari BE replicandoli localmente, gestendo le variazioni
>con la sincronizzazione.
>
Una soluzione un po' costosa (tempo e denaro) e':
Installa SQL-SERVER.
Trasforma le query in stored procedure.
Insomma fai lavorare il server invece che i client.


title: Replica Back End

text:
>Ditta Cerri dice:
>.........
> Ad una prima occhiata non mi pare la soluzione ideale.
> Due Domande:
> Che rete usate? Avete Hub o Switch? 10 o100Mbit?
> Hai valutato la possibilita' di passare, se proprio la situazione e' cosi'
> drammatica, a qualcosa tipo SQL?
> Ciao, Sib
1) La rete in questione è una 100Mbit con Hub 100 8 porte.
2) Ho valutato anche la scelta di SQL Server 7, ma data la
"staticità" dei dati mi sembra una scelta limite e costosa, mi spiego.
I Client FE devono fare fatturazione e ricerca prezzi per vendita al
banco. La tabella dei Prodotti (BE) varia al max 1 volta al giorno,
mentre la tabella Magazzino (BE) (carichi, scarichi e ordini ) e viene
aggiornata
piu spesso essendo legata alla vendita.  La tabella Anagrafe (BE) viene
aggiornata
al max. 1 volta alla settimana.
La tabella prodotti è di circa 10.000 articoli indicizzata per Codice e
Descrizione.
Il problema è che se due o piu utenti eseguono Query (es. cerca 1 prezzo )
uno dei due
o piu, spesso va in blocco : ( .
Il problema è nella grandezza delle Tabella ? nelle Relazioni ? o in  Access
97 ?
Sono a conoscenza dei problemi legati al sistema FileServer quando si
eseguono
query, ma non capisco i blocchi in lettura di Access a query avvenuta.
Anche se macchinosa la mia idea e di gestire le repliche in locale e
sincronizzare
i dati solo ad avvenuta variazione( cambio prezzo, Anagrafe ... ),
lasciando
solo i DB BE dei DatiVendita ( n.fat, dettagli fat etc. ) e Magazzino
 Carichi, scarichi ) non replicati.
Questa soluzione mi sembra  implementata su alcuni Applicativi contabili per
rete fileserver,
che mantengono in locale ad es. l'Anagrafe e i Prodotti piu selez. ,
gestendo le sole
sincronizzazioni con il server ... ??
Ciao e Grazie, Sting70


title: SQL, Query a campi incrociati

author: Ghepardo Al Lavoro

text:
Ciao, ho bisogno di creare una query a campi incrociati ma non riesco ad
ottenere il risultato voluto xè mi obbliga a mettere come valore una
funzione.
La query che ho scritto (anzi, che ha scritto la creazione guidata) é:
TRANSFORM Count([Vista degli attributi del prodotto].Valore) AS
ConteggioDiValore
SELECT [Vista degli attributi del prodotto].ID
FROM [Vista degli attributi del prodotto]
GROUP BY [Vista degli attributi del prodotto].ID
PIVOT [Vista degli attributi del prodotto].Descrizione;
Io vorrei che non fosse un COUNT(...) ma semplicemente un (...).
Chiaramente vorrei questo, consapevole del fatto che ho un solo valore
possibile per ogni cella tant'è che la query sopra riportata mi riporta
una tabella fatta da soli 1.
Se riusciste ad aiutarmi mi fareste un favore a dir poco ENORME!
PS: la query in questione la devo poi copiare in SQL Server quindi anche
soluzioni con estensioni valide x SQL Server sono accettate...
--
Posted via Mailgate.ORG Server -
http://www.Mailgate.ORG


title: SQL, Query a campi incrociati

author: Roberto da casa

text:
"Ghepardo Al Lavoro" <
pippoc...@tiscali.it
> ha scritto nel messaggio
news:31dc6e9ce6977c20bf6...@mygate.mailgate.org...
> Ciao, ho bisogno di creare una query a campi incrociati ma non riesco ad
> ottenere il risultato voluto xč mi obbliga a mettere come valore una
> funzione.
> La query che ho scritto (anzi, che ha scritto la creazione guidata) é:
> TRANSFORM Count([Vista degli attributi del prodotto].Valore) AS
> ConteggioDiValore
> SELECT [Vista degli attributi del prodotto].ID
> FROM [Vista degli attributi del prodotto]
> GROUP BY [Vista degli attributi del prodotto].ID
> PIVOT [Vista degli attributi del prodotto].Descrizione;
>
> Io vorrei che non fosse un COUNT(...) ma semplicemente un (...).
> Chiaramente vorrei questo, consapevole del fatto che ho un solo valore
> possibile per ogni cella tant'č che la query sopra riportata mi riporta
> una tabella fatta da soli 1.
>
> Se riusciste ad aiutarmi mi fareste un favore a dir poco ENORME!
>
>
> PS: la query in questione la devo poi copiare in SQL Server quindi anche
> soluzioni con estensioni valide x SQL Server sono accettate...
>
Modifica cosě il codice SQL della tua query a campi incrociati:
TRANSFORM First([Vista degli attributi del prodotto].Valore) AS [Il valore]
SELECT [Vista degli attributi del prodotto].ID
FROM [Vista degli attributi del prodotto]
GROUP BY [Vista degli attributi del prodotto].ID
PIVOT [Vista degli attributi del prodotto].Descrizione;
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


title: SQL, Query a campi incrociati

text:
> Modifica così il codice SQL della tua query a campi incrociati:
Ovviamente, che tu sia a casa, dal portatile, dalle Maldive, riesci
sempre a centrare il risultato.
Purtroppo non mi ero informato prima che SQL Server non supporta i campi
incrociati....
Sono sempre più sbalordito da Microsoft!
Al di là di Jet, Ansi e cippirimerlo, c'è un buon motivo per cui non
rendere disponibile una tecnologia così utile su uno strumento profes_
sionale come SQL Server?
Roba da matti!
Cmq, grazie mille!



title: SQL, Query a campi incrociati

text:
"Ghepardo Al Lavoro" <
pippoc...@tiscali.it
> ha scritto nel messaggio
news:d4cc090d39ce8061737...@mygate.mailgate.org...
> > Modifica così il codice SQL della tua query a campi incrociati:
>
> Ovviamente, che tu sia a casa, dal portatile, dalle Maldive, riesci
> sempre a centrare il risultato.
>
> Purtroppo non mi ero informato prima che SQL Server non supporta i campi
> incrociati....
> Sono sempre più sbalordito da Microsoft!
> Al di là di Jet, Ansi e cippirimerlo, c'è un buon motivo per cui non
> rendere disponibile una tecnologia così utile su uno strumento profes_
> sionale come SQL Server?
Mi dispiace ma io non ho esperienza di SQL Server; uso Access per hobby e
Access 97 che lavora in locale per divertirmi un po' mi basta e mi avanza!
:-)
>
> Roba da matti!
>
> Cmq, grazie mille!
Prego.



title: Evento non in elenco...

text:
Pensavo fosse una cavolatina e invece ci sto sbattendo le corna...
Vorrei semplicemente ottenere un msgbox quando ho un inserimento non
in elenco,
ma senza dover impostare il controllo a solo in elenco=sì
Inserisco il dato
Se in elenco OK
Se non in elenco Avvisa (ma senza aggiungerlo alla lista dei valori
della combobox ad es...)
Sperando di essere stato chiaro...
Seppoffà??
Alternative? sfrutto in qualche modo l'afterupdate??
F.


title: Evento non in elenco...

author: Roberto da Parma

text:
<
al...@libero.it
> ha scritto nel messaggio
news:e5c147ee-5dae-46c2...@d77g2000hsb.googlegroups.com...




Seppoffà??

F.
Perchè non vuoi mettere soloinelenco a SI, se poi non vuoi nemmeno che il
dato venga aggiunto?
Ciao
--
Roberto da Parma


title: Evento non in elenco...

author: Geppo

text:

Potresti sfruttare l'evento BeforeUpdate inquesto modo:
>=======================INIZIO==========================<
private sub NomeCombinata_beforeUpdate(cancel as integer)
dim rst as recordset
set rst = currentdb.openrecordset(me.NomeCombinata.rowsource)
with rst
.movefirst
do while not .eof
if .fields("NomeCampo") = me!NomeCombinata.text then
    Exit Sub
end if
.movenext
loop
end with
msgbox"Valore non in elenco", vbcritical, "Attenzione......"
Cancel = true
set rst = nothing
end sub
>======================FINE==========================<
> F.
--
Ciao
Geppo


title: Evento non in elenco...

text:
>Perchè non vuoi mettere soloinelenco a SI, se poi non vuoi nemmeno che il
>dato venga aggiunto?
Perchè vorrei utilizzare la combo anche con voci non in elenco..
In pratica nel campo devo inserire il tipo di lavoro (dell'offerta)
La maggior parte delle volte trattasi di lavoro standard (preso dalla
combo), ma non sempre
E se il lavoro non è standard non lo voglio nell'elenco delle voci
Però farebbe comodo un messaggio di avviso "Hai inserito un lavoro non
comrpeso nell'elenco sei sicuro che sia non standard??"
>Potresti sfruttare l'evento BeforeUpdate inquesto modo: ...
Grazie Geppo, proverò al più presto (oggi ho 38 non mi sento
abbastanza lucido..) :-(
Ma dici che funzia anche se rowsource combo è impostato a elenco
valori??
F.


title: Evento non in elenco...

text:

Questo non lo avevi detto.
Allora come indicato nell'help, puoi sfruttare la proprietà "LimitToList" in
questo:
private sub NomeTuaCasellaCombinata_beforeupdate(Cancel as integer)
Me!NomeTuaCasellaCombinata.LimitToList = true
end sub
> F.
--
Ciao
Geppo


title: Evento non in elenco...

text:
Scusa, ma avevo dimenticato questo:
"......ma senza dover impostare il controllo a solo in elenco=sì"
Dunque tornando a noi, puoi provare in questo modo:
dim a() as string
dim i as integer
a = split(NomeTuaCasellaCombinata.rowsource,";")
for i = 0 to ubound(a)
if a(i) = NomeTuaCasellaCombinata.text then
   exit sub
end if
next i
msgbox "Valore non in elenco", vbcritical, "Attenzione........."
Cancel = true
--
Ciao
Geppo


title: Evento non in elenco...

text:
Certo che sono proprio fuori, sarà il caldo....
dimenticavo.......ti auguro una pronta guarigione. :-)
--
Ciao
Geppo


title: Evento non in elenco...

text:

GRAZIE MILLE GEPPO!!!
Ok testata e funziona eliminando però la riga cancel=true che
sinceramente non ho capito bene cosa faccia... (mea culpa)
Annulla l'operazione di update??
Allora immagino dovesse essere= false nell'esempio
Il mio codice leggermente modificato finisce con:
MyMsgBox = MsgBox("ATTENZIONE! E' stato inserito un lavoro non
contenuto nell'elenco! E' un valore corretto da mantenere?", vbYesNo,
"Valore non in elenco")
If MyMsgBox = vbNo Then
Cancel = True
Me.TipoLavoro.Undo
end if
e non ho ben chiaro cosa facciano
  cancel= true ' non completa il salvataggio?
  me.tipolavoro.undo ' torna al valore precedente inserito?(ma se è
così la riga sopra può essere superflua?) (ma soprattutto con il caldo
che fa' e del codice funzionane per quale minchia di motivo oggi mi
sono imputato così tanto sul suo filosofeggiamento??)
 ma se qualcuno vuole deliziarmi
F.


title: Evento non in elenco...

text:
Ciao
al...@libero.it
 wrote:
> On 14 Ago, 18:55, "Geppo" <c...@tin.it.invalid> wrote:
>> Scusa, ma avevo dimenticato questo:
>>
>> "......ma senza dover impostare il controllo a solo in elenco=sì"
>>
>> Dunque tornando a noi, puoi provare in questo modo:
>>
>> dim a() as string
>> dim i as integer
>>
>> a = split(NomeTuaCasellaCombinata.rowsource,";")
>>
>> for i = 0 to ubound(a)
>> if a(i) = NomeTuaCasellaCombinata.text then
>> exit sub
>> end if
>> next i
>>
>> msgbox "Valore non in elenco", vbcritical, "Attenzione........."
>>
>> Cancel = true
>>
>> --
>> Ciao
>> Geppo
>
>
> GRAZIE MILLE GEPPO!!!
>
> Ok testata e funziona eliminando però la riga cancel=true che
> sinceramente non ho capito bene cosa faccia... (mea culpa)
> Annulla l'operazione di update??
Cancel = true serve ad annullare eventuali eventi che si scatenano a seguito
di un azione posta in essere dall'utente; ad esempio l'utente inserisce un
dato non corretto e poi si sposta su un altro controllo, bene "cancel =
true" impedisce tale evento e obbliga l'utente ad inserire un dato corretto
altrimenti non riuscirà a spostarsi.
> Allora immagino dovesse essere= false nell'esempio
>
> Il mio codice leggermente modificato finisce con:
>
> MyMsgBox = MsgBox("ATTENZIONE! E' stato inserito un lavoro non
> contenuto nell'elenco! E' un valore corretto da mantenere?", vbYesNo,
> "Valore non in elenco")
> If MyMsgBox = vbNo Then
> Cancel = True
> Me.TipoLavoro.Undo
> end if
>
> e non ho ben chiaro cosa facciano
>
>   cancel= true ' non completa il salvataggio?
>   me.tipolavoro.undo ' torna al valore precedente inserito?(ma se è
> così la riga sopra può essere superflua?)
Cosa fa "cancel = true" ho cercato di spiegarlo sopra, pertanto si capisce
che "Undo" fa una cosa diversa e cioè ripristina un controllo quando è stato
modificato il relativo valore.
>(ma soprattutto con il caldo
> che fa' e del codice funzionane per quale minchia di motivo oggi mi
> sono imputato così tanto sul suo filosofeggiamento??)
>  ma se qualcuno vuole deliziarmi
>
> F.
--
Ciao
Geppo


title: Istruzione If con campi nulli

author: Marco

text:
Ho un problema..devo fare un controllo tra una data che sta su di
un'archivio e una data di una maschera, il campo data della maschera ha
valore iniziale null, quando faccio il confronto dalle duese ne frega
altamente, ho provato a metterein valore predefinito 0 (in modo da levare il
valore null) ma nel campo data scrive 30/12/1899
Sapete come aiutarmi
Il mio problema è un pò più complesso devo confrontare i campoi della
maschera con i campi della tabella il problema è che alcuni di questi nella
tabella sono nulli e il confronto non me lo fa
Saluti
Marco
** Free nntp server at
www.x-privat.org
 **


title: Istruzione If con campi nulli

author: Neo

text:
"Marco" <
earth...@infinito.it
> ha scritto nel messaggio
news:3ee5b7a3$1...@x-privat.org...

nel controllo inserisci:
se da query:
iif(isnull(data1);"dagli un valore che vuoi tu, oppure non eseguire il
calcolo";iif(isnull(data2);"dagli il valore che vuoi tu, oppure non eseguire
il calcolo";CALCOLO))
se da VbA
if isnull(data1) then
    data1 = #valore che vuoi tu#
    'oppure
    goto uscita 'salta i calcoli
elseif isnull(data2) then
    data2 = #valore che vuoi tu#
    'oppure
    goto uscita 'salta i calcoli
else
   CALCOLO
end if


title: Istruzione If con campi nulli

text:
"Marco" <
earth...@infinito.it
> ha scritto nel messaggio
news:3ee5b7a3$1...@x-privat.org...
> Ho un problema..devo fare un controllo tra una data che sta su di
> un'archivio e una data di una maschera, il campo data della maschera ha
> valore iniziale null, quando faccio il confronto dalle duese ne frega
> altamente, ho provato a metterein valore predefinito 0 (in modo da levare
il
> valore null) ma nel campo data scrive 30/12/1899
Questo è normale, è per questo che normalmente si usa Null come valore
predefinito di un campo Data/ora.
>
> Sapete come aiutarmi
>
> Il mio problema è un pò più complesso devo confrontare i campoi della
> maschera con i campi della tabella il problema è che alcuni di questi
nella
> tabella sono nulli e il confronto non me lo fa
In una maschera non esistono i campi, che esistono solo nelle tabelle e
nelle queries; nelle maschere e nei reports esistono i controlli.
Cosa intendi con "i campi della maschera con i campi della tabella" ?
Non mi è chiaro cosa vuoi fare se i campo della tabella è Null e cosa vuoi
fare se il campo non è Null.
>
> Saluti
>
> Marco
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


title: Istruzione If con campi nulli

text:
"Roberto da casa" <
r.ma...@libero.it
> ha scritto nel messaggio
news:tRjFa.76650$lK4.2...@twister1.libero.it...
>
> "Marco" <
earth...@infinito.it
> ha scritto nel messaggio
> news:3ee5b7a3$1...@x-privat.org...
> > Ho un problema..devo fare un controllo tra una data che sta su di
> > un'archivio e una data di una maschera, il campo data della maschera ha
> > valore iniziale null, quando faccio il confronto dalle duese ne frega
> > altamente, ho provato a metterein valore predefinito 0 (in modo da
levare
> il
> > valore null) ma nel campo data scrive 30/12/1899
>
> Questo è normale, è per questo che normalmente si usa Null come valore
> predefinito di un campo Data/ora.
>
> >
> > Sapete come aiutarmi
> >
> > Il mio problema è un pò più complesso devo confrontare i campoi della
> > maschera con i campi della tabella il problema è che alcuni di questi
> nella
> > tabella sono nulli e il confronto non me lo fa
>
> In una maschera non esistono i campi, che esistono solo nelle tabelle e
> nelle queries; nelle maschere e nei reports esistono i controlli.
> Cosa intendi con "i campi della maschera con i campi della tabella" ?
> Non mi è chiaro cosa vuoi fare se i campo della tabella è Null e cosa vuoi
> fare se il campo non è Null.
Mi spiego meglio in una maschera ho delle caselle di testo che riempio
manualmente (via codice) con i campi di una tabella.
Il mio problema è che sull'evento del bottone che mi chiude la maschera (sul
click) voglio controllare che i dati che sono sulla maschera sono identici a
quelli che sono sulla tabella, per questo devo fare un controllo tra le
caselle di testo della maschera e i campi della tabella.
Il problema è che un'istruzione del genere:
If tab1!campo1 <> Me.Xcampo1 or tab1!campo2 <> Me.Xcampo2 or tab1!campo3 <>
Me.Xcampo3 then
MsgBox ("i dati della maschera sono stati variati")
endif
Con i campi null non funziona anzi se ---  tab1!campo1 = Me.Xcampo1,
tab1!campo1 = Me.Xcampo1, tab1!campo3 = null e Me.Xcampo3 = "aaaa" mi
dovrebbe dare il messaggio cosa che non fa
Spero di essere stato più chiaro
Grazie Marco
** Articoli inviato tramite i servizi gratuiti di
www.x-privat.org
 **


title: Istruzione If con campi nulli

text:
"Marco" <
earth...@infinito.it
> ha scritto nel messaggio
news:3ee6...@x-privat.org...

La prima cosa che sento di dirti è che, se il tuo problema è quello di
sapere se il record corrente è stato modificato, usa la proprietà Dirty
della maschera (vedi help); cioè puoi generare il seguente codice VBA:
If Me.Dirty Then
  MsgBox ("i dati della maschera sono stati variati")
End If
Ciò premesso, per confrontare il valore di una casella di testo con il
valore di un campo del record corrente, devi far ricorso ad una funzione
DLookup; dovresti scrivere una cosa del genere:
If Me!Xcampo1 <> DLookup("campo1", "tab1", "ID=" & Me!ID)
Dove ID è il nome della chiave primaria della tabella tab1.
Se poi ti interessa sapere se campo1 è Null, prova così:
If IsNull(DLookup("campo1", "tab1", "ID=" & Me!ID)) Then
Stai però attento che la condizione si verificherà sia se il campo campo1 è
Null e sia se i criteri dell funzione DLookup non sono soddisfatti.



title: ci riprovo

author: Orso

text:
non voglio rompervi ma dopo interminabili quanto inutili ricerche sul web vi
ripropongo il quesito di 3 gg fa.
In A97 ho delle etichette su un form che vengono scritte da codice, il testo
è distrbuito su tre righe e il rimando a capo avviene con  .... & vbcrlf() &
...
dato che ho poco spazio ho già scelto un carattere molto compatto ma
l'ideale sarebbe diminuire lo spazio tra le righe.
Ho provato pure ad editare il font con un programma pescato in rete, ma non
ci ho capito un a@@o e non ho trovato neppure uno straccio di manuale, post,
testo o chiacchiera che mi desse una dritta.
Che faccio mollo e me lo tengo bruttino?    Heeeeelp !!!!!!
Stavolta nessun grazie anticipato, guadambiatevelo! :-)))
Saluti da Orso


title: ci riprovo

author: Emyr

text:


su access 2000 ho trovato la proprietà line spacing
sulle caselle di testo, vedi cosa fa!
Ciao Emanuele.


title: Elimina record e perde riferimento query

author: eSuS

text:
Ragazzi ,non riesco a capire il funzionamento o mal funzionamento che mi
avviene in una maschera quando elimino un preciso record:
Ho una tabella "Posta" ed una Maschera "Posta"
In questa maschera ho 3 sottomaschere "agenda" "msgpersonali" "lavagna"
che come origine controllo hanno 3 diverse query effettuate dalla Tabella
principale cioè "Posta", e poi il campo Posta.messaggio che mi serve per
scrivere nuovi messaggi che poi verranno inviati ad una delle tre
sottomashere.
A seconda della user d'accesso controllata da una macro essa apre la
maschera "posta" filtrando e visualizzando gli opportuni messaggi.
Quello che non riesco a capire e questo :
Nel campo messaggio della maschera principale "Posta" viene visualizzato
l'ultimo messaggio del record inviato (scusate il gioco di parole)
che si trova in una delle 3 sottomashere. Ora accade che, se io cancello i
messaggi dalle sottomaschere tutto tranquillo, ma se cancello lo stesso
messaggio che riappare anche nella maschera principale perdo praticamenti
tutti i filtri applicati in origine tramite la user di ingresso.(è come se
l'ultimo record inviato tenesse il riferimento ai filtri)
Come mai avviene questo?
Ho provato anche con me.requery, ma nulla
dopo che cancello perdo i riferimenti e mi tocca riaprire la maschera
accesso posta.
Qualcuno sa aiutarmi?
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news
 segnala gli abusi ad
ab...@newsland.it


title: Inserimento data in form all'interno di un range mese/anno...

author: Announced

text:
Ciao a tutti...
dovrei gestire l'inserimento in un controllo di una data registrazione
(DataReg) in una Form (FrmCont) che deve essere all'interno di un range
di mesi impostati su di un'altra Tbl.
L'inserimento di questi due mesi, e qui non so se l'ho gestita
correttamente, l'ho organizzata in una Form ad hoc con 4 Combo MM1
AAAA1 e MM2 AAAA2 che, attraverso "dataserial" mi creano le due date.
Ora, per le due date create che mi si generano su cotrolli nascosti, ho
fatto in modo che ricadano sul 1° giorno del mese, non sapendo/potendo
fare diversamente.
Come posso gestire la DataReg della FormCont che sia all'interno dei
mesi del range impostato?
Grazie
Paolo


text:
>"Announced" <
paolosc...@alice.it
> ha scritto nel messaggio
news:1129637484....@g49g2000cwa.googlegroups.com...

Se DataReg è una casella di testo associata ad un campo di tipo Data/ora.
Se le 4 combo le inserisci nella intestazione della maschera FrmCont.
A fronte dell'evento "Prima di aggiornare" del controllo DataReg genera il
seguente codice VBA:
Private Sub DataReg_BeforeUpdate(Cancel As Integer)
Dim Inizio As Date
Dim Fine As Date
Inizio = DateSerial(Me!AAAA1, Me!MM1, 1)
Fine = DateSerial(Me!AAAA2, Me!MM2 + 1, 0)
If Me!DataReg < Inizio Or _
    Me!DataReg > Fine Then
    MsgBox "La data " & Me!DataReg & " è fuori range!", _
        vbCritical, "Verifica DataReg"
    Cancel = True
End If
End Sub
Se poi le 4 combo le vuoi proprio inserire in un'altra maschera chiamata
Pippo, allora il codice VBA di cui sopra modificalo così:
Private Sub DataReg_BeforeUpdate(Cancel As Integer)
Dim Inizio As Date
Dim Fine As Date
Inizio = DateSerial(Forms!Pippo!AAAA1, Forms!Pippo!MM1, 1)
Fine = DateSerial(Forms!Pippo!AAAA2, Forms!Pippo!MM2 + 1, 0)
If Me!DataReg < Inizio Or _
    Me!DataReg > Fine Then
    MsgBox "La data " & Me!DataReg & " è fuori range!", _
        vbCritical, "Verifica DataReg"
    Cancel = True
End If
End Sub
>
>Grazie
Prego
>Paolo
--
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------


text:
Roberto da casa ha scritto:
> >"Announced" <
paolosc...@alice.it
> ha scritto nel messaggio
> news:1129637484....@g49g2000cwa.googlegroups.com...
> >Ciao a tutti...

Grazie Roberto innanzitutto...
Dunque, in realtà io utilizzo la Form "Pippo" solo per inserire in una
tabella queste due date (Inizio e Fine). Potrei portarmi, con una
subForm, le due date già formattate sulla FormCont ed utilizzare la
tua seconda soluzione in questo modo.
 Dim Inizio As Date
 Dim Fine As Date
 Inizio = Me.Pippo!DataInizio
 Fine = Me.Pippo!DataFine
 If Me!DataReg < Inizio Or _
     Me!DataReg > Fine Then
     MsgBox "La data " & Me!DataReg & " è fuori range!", _
         vbCritical, "Verifica DataReg"
     Cancel = True
 End If
Ma il controllo che mi hai inserito all'interno della routine non
agisce solo sul mese, ma tiene conto anche del giorno delle due date
(Inizio e Fine).
DataReg non deve essere uguale o inferiore solo al "mese" della
DataInizio e, ugualmente, non deve essere superiore solo al "mese"
della DataFine.
E' questo che non riesco a fare, e cioè mettere il controllo solo sul
"mese".
Puoi indicarmi come...???
Grazie Roberto
Paolo


text:
...o Roberto o qualcun altro potrebbe venirmi in soccorso?
Grazie
Paolo


text:
"Announced" <
paolosc...@alice.it
> ha scritto nel messaggio
news:1129818527....@o13g2000cwo.googlegroups.com...
> ...o Roberto o qualcun altro potrebbe venirmi in soccorso?
>
> Grazie
Noto che anche tu pretendi una risposta a breve giro di posta.



text:
"Announced" <
paolosc...@alice.it
> ha scritto nel messaggio
news:1129672704.4...@o13g2000cwo.googlegroups.com...

Scusami ma basta che la maschera pippo sia associata alla tabella in cui
vuoi memorizzare le due date e Inizio e Fine le fai diventare due caselle di
testo associate ai due campi Data/ora delle tabella ed il gioco è fatto.;
naturalmente dal mio codice VBA eliminerai le due Dim con cui ho definito le
variabili di tipo Data/ora Inizio e Fine.
>
>Ma il controllo che mi hai inserito all'interno della routine non
>agisce solo sul mese, ma tiene conto anche del giorno delle due date
>(Inizio e Fine).
>DataReg non deve essere uguale o inferiore solo al "mese" della
>DataInizio e, ugualmente, non deve essere superiore solo al "mese"
>della DataFine.
>E' questo che non riesco a fare, e cioè mettere il controllo solo sul
>"mese".
>Puoi indicarmi come...???
Forse ti è sfuggito che il codice che ti ho consigliato già effettua di
fatto la selezione solo in base al "mese": per realizzare questo ho forzato
come giorno di Inizio 1 (quindi Inizio diventa la data di inizio mese del
mese che hai selezionato in MM1) e come giorni fine il giorno di fine mese
(quindi fine diventa la data di fine del mese che hai selezionato con MM2);
forse se provi le soluzioni che ti vengono consigliate valuterai meglio se
risolvono o meno il problema da te posto.
>Grazie Roberto
Prego.



text:
>Noto che anche tu pretendi una risposta a breve giro di posta.
No, non l'ho mai fatto... avevo solo che il timore che il post, dopo
2gg finisse, nel dimenticatoio. Per me era importante e l'ho voluto
rimettere in evidenza... molto probabilmente mi sbagliavo!!!
>Forse ti è sfuggito che il codice che ti ho consigliato già effettua di
>fatto la selezione solo in base al "mese": per realizzare questo ho forzato
>come giorno di Inizio 1 (quindi Inizio diventa la data di inizio mese del
>mese che hai selezionato in MM1) e come giorni fine il giorno di fine mese
>(quindi fine diventa la data di fine del mese che hai selezionato con MM2);
>forse se provi le soluzioni che ti vengono consigliate valuterai meglio se
>risolvono o meno il problema da te posto.
Dunque, io ho provato la tua soluzione, ho inserito una SubForm (Pippo)
nella FmCont ed ho anche provato a scrivere:
Dim Inizio As Date
Dim Fine As Date
Inizio = DateSerial(Me!Pippo!AAAA1, Me!Pippo!MM1, 1)
Fine = Fine = DateSerial(Me!Pippo!AAAA2, Me!Pippo!MM2 + 1, 0)
If Me!DataReg < Inizio Or _
    Me!DataReg > Fine Then
    MsgBox "La data " & Me!DataReg & " è fuori range!", _
        vbCritical, "Verifica DataReg"
    Cancel = True
End If
Ma ti assicuro che se io imposto:
MM1 04
AAAA1 2005
MM2 06
AAAA2 2005
...se inserisco 15/03/2005 non me la prende (OK)
   se inserisco 15/06/2005 me la prende (OK)
...se inserisco 15/07/2005 non me la prende (OK)
   se inserisco 15/04/2005 me la prende (Non OK in quanto le date che
inserisco devono essere comprese tra Maggio e Giugno 2005)
Forse mi sono espresso male nei precedenti post
MM1 e AAAA1 è il mese di chiusura cioè il mese che non deve più
permettere registrazioni (non compreso)
MM2 e AAAA2 è l'ultimo mese che può permettere registrazioni
(compreso)
Per questo che volevo agire sui mesi per poi fare > e <
Se non sono stato ancora chiaro ti prego dimmelo...
Paolo


text:
"Announced" <
paolosc...@alice.it
> ha scritto nel messaggio
news:1129835789.4...@z14g2000cwz.googlegroups.com...
>Noto che anche tu pretendi una risposta a breve giro di posta.
>No, non l'ho mai fatto... avevo solo che il timore che il post, dopo
>2gg finisse, nel dimenticatoio. Per me era importante e l'ho voluto
>rimettere in evidenza... molto probabilmente mi sbagliavo!!!
>
>>Forse ti è sfuggito che il codice che ti ho consigliato già effettua di
>>fatto la selezione solo in base al "mese": per realizzare questo ho
forzato
>>come giorno di Inizio 1 (quindi Inizio diventa la data di inizio mese del
>>mese che hai selezionato in MM1) e come giorni fine il giorno di fine mese
>>(quindi fine diventa la data di fine del mese che hai selezionato con
MM2);
>>forse se provi le soluzioni che ti vengono consigliate valuterai meglio se
>>risolvono o meno il problema da te posto.
>
>Dunque, io ho provato la tua soluzione, ho inserito una SubForm (Pippo)
Sottomaschera?
Mi sfugge il motivo per cui usare una sottomaschera, ma se sta bene a te sta
bene a tutti.
>nella FmCont ed ho anche provato a scrivere:
>
>
>Dim Inizio As Date
>Dim Fine As Date
>Inizio = DateSerial(Me!Pippo!AAAA1, Me!Pippo!MM1, 1)
>Fine = Fine = DateSerial(Me!Pippo!AAAA2, Me!Pippo!MM2 + 1, 0)
Fine = Fine = DateSerial(Me!Pippo!AAAA2, Me!Pippo!MM2 + 1, 0)
e cosa significa questa riga di codice?
Non ti dà errore formale?
>If Me!DataReg < Inizio Or _
>    Me!DataReg > Fine Then
>    MsgBox "La data " & Me!DataReg & " è fuori range!", _
>        vbCritical, "Verifica DataReg"
>    Cancel = True
>End If
>
>Ma ti assicuro che se io imposto:
>MM1 04
>AAAA1 2005
>MM2 06
>AAAA2 2005
>
>...se inserisco 15/03/2005 non me la prende (OK)
>   se inserisco 15/06/2005 me la prende (OK)
>...se inserisco 15/07/2005 non me la prende (OK)
>   se inserisco 15/04/2005 me la prende (Non OK in quanto le date che
>inserisco devono essere comprese tra Maggio e Giugno 2005)
>
>Forse mi sono espresso male nei precedenti post
>
>MM1 e AAAA1 è il mese di chiusura cioè il mese che non deve più
>permettere registrazioni (non compreso)
>MM2 e AAAA2 è l'ultimo mese che può permettere registrazioni
>(compreso)
>
>Per questo che volevo agire sui mesi per poi fare > e <
Anche questo concetto mi sfugge, però, se selezionando 04 (aprile) su MM1 si
devono considerare buone solo le date a partire dal mese successivo (ovvero
05, maggio), prova  a sostituire:
Inizio = DateSerial(Me!Pippo!AAAA1, Me!Pippo!MM1, 1)
con
Inizio = DateSerial(Me!Pippo!AAAA1, Me!Pippo!MM1 + 1, 1)
>
>Se non sono stato ancora chiaro ti prego dimmelo...
Non sono sicuro di aver capito proprio tutto bene, ma prova ad appoertare la
modifica di cui sopra e se non funziona rifatti vivo.



text:
Il Fine = Fine = ... è solo un errore di copiatura sul post!
Con la modifica funziona benissimo... ma come non sono riuscito a
vedere che bastava il "+1" al mese non lo so...
Grazie ancora Roberto!
Ciao
Paolo


title: OT Traduzione FAQ 4.10

author: Karl Donaubauer

text:
********************
4.10 Change the row with arrow keys
Problem
In a continuous form you want to use the up and down keys to
change the record, like it's possible in datasheet view or in
tables and queries.
Solution
Set the property KeyPreview of the form to Yes. Use the following
code in the KeyDown event of the form:
On Error Resume Next 'if first or last record
If KeyCode = vbKeyDown Then
  KeyCode = 0
  DoCmd.GoToRecord , , acNext
End If
If KeyCode = vbKeyUp Then
  KeyCode = 0
  DoCmd.GoToRecord , , acPrevious
End If
*******************
Sono spesso in giro in questi giorni. Ora almeno ho immesso in
un mdb anche gli articoli italiani della FAQ e impostato un sito
per la ricerca. P.f. testate la ricerca e segnalatemi errori,
formulazioni strani ecc.
--
cu
Karl
*********
Access-FAQ
http://www.donkarl.com/it


title: OT Traduzione FAQ 4.10

author: sv

text:
Karl Donaubauer ha scritto:

> Problem

> Solution



4.10 Cambiare riga con il tasto freccia
Problema
In una maschera continua vuoi usare i tasti sů e giů per cambiare record,
cosě come in un foglio dati o nelle tabelle o query.
Soluzione
Imposta la proprietŕ  KeyPreview (Anteprima tasti) della maschera a Sě.
Utilizza il seguente codice nell’evento KeyDown (Su tasto giů) della
maschera:
On Error Resume Next   'se primo o ultimo record
If KeyCode = vbKeyDown Then
KeyCode = 0
DoCmd.GoToRecord , , acNext
End If
If KeyCode = vbKeyUp Then
KeyCode = 0
DoCmd.GoToRecord , , acPrevious
End If
--
rgrds
SC
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news
 segnala gli abusi ad
ab...@newsland.it


title: OT Traduzione FAQ 4.10

text:
Karl Donaubauer ha scritto:
<cut>
> Sono spesso in giro in questi giorni. Ora almeno ho immesso in
> un mdb anche gli articoli italiani della FAQ e impostato un sito
> per la ricerca. P.f. testate la ricerca e segnalatemi errori,
> formulazioni strani ecc.
Trovo in Storia
04.07.2004 Iniziamo la traduzione all'italiano
1998 - Giugnio 2004 Le FAQ erano pubblicate solo in lingua tedesca
Da cambiare in:
04.07.2004 - Iniziamo la traduzione in italiano
1998 - Giugno 2004 - Le FAQ erano pubblicate solo in lingua tedesca



title: OT Traduzione FAQ 4.10

author: MA

text:
"sv" <
sal...@nosp.accessgroup.it
> ha scritto nel messaggio
news:cp6fte$qb7$1...@news.newsland.it...

Salvino, ma tu non dormi mai???
Per me buona la traduzione.


title: OT Traduzione FAQ 4.10

text:
MA ha scritto:
<cut>
> Salvino, ma tu non dormi mai???
> Per me buona la traduzione.
Alle 06.00 già sveglio (anche nei gg di festa)
Abluzioni
Alle 7.00 colazione
Dalle 7.00 alle 8.00 già una bella oretta di lavoro.
E sai per ora di che si tratta.(Ho quasi terminato il 4°)
Alle 8.00 fuori, al lavoro in azienda.
Prima di mezzanotte a nanna.



title: OT Traduzione FAQ 4.10

text:
> Dalle 7.00 alle 8.00 già una bella oretta di lavoro.
> E sai per ora di che si tratta.(Ho quasi terminato il 4°)
Porc...
anche io ho quasi finito il mio. (è più lungo scrivere che altro)
MAssimiliano


title: OT Traduzione FAQ 4.10

text:
sv wrote:
> Karl Donaubauer ha scritto:
> <cut>
>> Sono spesso in giro in questi giorni. Ora almeno ho immesso in
>> un mdb anche gli articoli italiani della FAQ e impostato un sito
>> per la ricerca. P.f. testate la ricerca e segnalatemi errori,
>> formulazioni strani ecc.
>
> Trovo in Storia
>
> 04.07.2004 Iniziamo la traduzione all'italiano
> 1998 - Giugnio 2004 Le FAQ erano pubblicate solo in lingua tedesca
>
> Da cambiare in:
>
> 04.07.2004 - Iniziamo la traduzione in italiano
> 1998 - Giugno 2004 - Le FAQ erano pubblicate solo in lingua tedesca
Ok.
--
tnx
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ:
http://www.donkarl.com


title: Access e Outlook Express

author: Troll

text:
Dove posso trovare un esempio o addirittura un modulo che mi permetta di
gestire da access Outlook Express per mandare email con attach....sono in
possesso di un modulo che mi gestisce Outlook "Normale", e francamente non
so dove mettere le mani per "riciclarlo" su Express.
Il tutto mi servirebbe, per permettere ad un utente finale di inviarmi in
automatico email con richieste di assistenza e/o attach di files.
Grassie (-25 alle mie ferie!)
Troll
"C'e' sempre qualcosa da vedere per chi sa dove guardare"


title: Access e Outlook Express

author: Alessandro Crespi

text:
Ciao!
Purtroppo non posso aiutarti per il tuo problema!
Perň potrebbe essermi utile il modulo per Outlook "Normale" (98)...
Dove posso trovarlo?
Grazie.
Alessandro
Troll <Tr...@Troll.fi> wrote in message 8ketda$5do$1...@nslave1.tin.it...



title: Access e Outlook Express

text:
Se il NG mi da' il permesso lo posto qua (47kb)
Troll
 "C'e' sempre qualcosa da vedere per chi sa dove guardare"
Alessandro Crespi <
alessand...@mascagni.it
> wrote in message
396b2...@212.7.64.37...



title: Access e Outlook Express

text:
Lo attendo con ansia, inchinandomi verso i supremi del NG...
;-)
Grazie in anticipo...
Alessandro
Troll <Tr...@Troll.fi> wrote in message 8kfbpi$776$1...@nslave2.tin.it...



title: sottoquery in sostituzione di DLooKup non funziona

text:
perchè questa query con una funzione di Aggregazione funziona,
SELECT tComposizioneMiscela.Ordine,
tComposizioneMiscela.IDCOMPOSIZIONEMISCELA,
DLookUp("dataanalisi","tordinitramoggie","idcomposizionemiscela=" &
[idcomposizionemiscela]) AS DataScarico
FROM tComposizioneMiscela;
e la stessa query con al posto del DLooKup una sottoquery:
SELECT tComposizioneMiscela.Ordine AS Ordine,
tComposizioneMiscela.IDCOMPOSIZIONEMISCELA AS IDCOMPOSIZIONEMISCELA, (Select
T2.[DataAnalisi] FROM [tOrdiniTramoggie] AS T2 WHERE
T2.[idcomposizionemiscela]=tComposizioneMiscela.[idcomposizionemiscela]) AS
DataScarico
FROM tComposizioneMiscela;
non funziona?
mi da il seguente errore:
La sottoquery può restituire al massimo un record
mi potete aiutare?
grazie
ciao


text:
mi rispondo :
> SELECT tComposizioneMiscela.Ordine AS Ordine,
> tComposizioneMiscela.IDCOMPOSIZIONEMISCELA AS IDCOMPOSIZIONEMISCELA,
(Select top 1



title: Password del back end

author: Millino

text:
Problema da risolvere in Access 97:
ho realizzato un front-end (mde) in cui (per mie necessità) gli utenti
devono identificarsi e digitare una password specifica (che viene
memorizzata su una piccola tabella creata nel front-end stesso: password
che viene poi gestita con un po' di codice dietro le form).
Premetto che non ho utilizzato gli strumenti di protezione di Access -
rimedierò , forse, più avanti -  sono un po' pigro...
Ho intenzione di proteggere con password, stavolta con quella vera di
Access, anche il back-end (so bene i limiti di questa protezione, ma va
bene lo stesso), ma con questa accortezza: vorrei che la password per
aprire il back-end non fosse nota all'utente che accede al front-end
(così che gli utenti stessi non possano aprire a parte il back-end e
combinare guai nelle tabelle).
Come si può fare?
marco


title: aiuto su combo

author: Claudia G

text:
io ho una combo  e faccio la mia scelta
poi sotto un altra combo e i recor dovrebbero essere legati alla scelta
superiore
e poi sotto un altra che fa la stessa cosa
esempio
Combo Ferramenta
sotto Combo Cacciaviti
sotto Combo Stella
ecco vorrei che tutti fossero legati come è possibile?


title: aiuto su combo

text:
"Claudia G" <
cla...@libero.it
> ha scritto nel messaggio
news:aj8g69$rti$1...@lacerta.tiscalinet.it...

> ecco vorrei che tutti fossero legati come č possibile?
>
>
Puoi farlo in 2 modi:
1)Realizzare un Filtro progressivo che tenga conto delle COMBO e le applichi
alla proprietą FILTER della FORM (SCONSIGLIATO)
2)Realizzi una bella QUERY PARAMETRICA con i campi da visializzare e nelle
condizioni metti il riferimento alle COMBO.
   Su evento UFTER_UPDATE delle COMBO esegui il Requery della Form.
   Ovviamente la FORM avrą come RECORDSOURCE la Query.
@Alessandro.


title: Manutenzione BaseDati

author: SunRex

text:
Ho un progetto diviso in BE e FE.Il BE si trova su un server dell'ospedale
dove lavoro mentre il FE si trova su un PC del laboratorio dove lavoro.Il FE
ha tre Function che mi servono per effettuare le seguenti operazioni
BackUp
Compattazione
Ripristino
Tutte e tre le Function richiedono la chiusura del BE.Ora avendo intenzione
di installare più di un FE su vari PC del laboratorio mi servirebbe un
consiglio su come gestire tali Function.In pratica avrei pensato di
permettere tali operazioni solo da PC del capotecnico e quindi dovrei
intercettare se al momento del lancio delle function esistono altri FE
collegati e quali possibilmente e quindi avvisare l'utente di riprovare in
seguito.Si puo fare o come penso dovrò limitarmi ad intercettare l'eventuale
errore causato dal fatto che il file sul server è aperto?
SunRex


title: Manutenzione BaseDati

text:
"SunRex" <
sunrexs...@hotmail.com
> ha scritto nel messaggio
news:Y2nnb.56411$e5.20...@news1.tin.it...

leggi il file ldb del Be con wordpad
MAssimiliano


title: Manutenzione BaseDati

author: Salvatore

text:
"MA" <
keiko...@libero.it
> ha scritto nel messaggio
news:__onb.14440$uv4...@news.edisontel.com...

Meglio con blocco note. Wordpad non lo consente, in quanto dice che il file
è già aperto da altra applicazione.
Salvatore


title: Manutenzione BaseDati

text:
"Salvatore" <
sal...@tiscali.it
> ha scritto nel messaggio
news:bnl8jr$vmp$1...@lacerta.tiscalinet.it...

Io avrei pensato ad una cosa del genere
Public Function FileExists(sFilename As String) As Boolean
On Error GoTo ErrExit
    FileExists = CBool(Len(Dir(sFilename)) <> 0)
    Exit Function
ErrExit:
    MsgBox Err.Description
Exit Function
End Function
impostando sFilename con il percorso del lbl
Ma con il notepad o wordpad come dovrei fare?
SunRex


title: Manutenzione BaseDati

author: Sergio MAZZA

text:
"SunRex" <
sunrexs...@hotmail.com
> ha scritto nel messaggio
news:Y2nnb.56411$e5.20...@news1.tin.it...

Potresti inserire in ogni client una funzione che scrive sul server in file
di testo con il nome del client che ha l'FE aperto; chiaramente alla
chiusura dell'applicazione dovresti eliminare il file. Poi con un Net Send
gli invii un messaggio...
Ciao.
--
Sergio MAZZA


title: Manutenzione BaseDati

text:

Gli dai il path di note pad e poi quello del .ldb
MAssimilaino


title: db condiviso rinominato

author: Mauro

text:
Premetto di essere alle prime armi con access e per questo non riesco a
risolvere questo problema: un batabase da me creato è stato collocato
all'interno di una cartella del mio pc d'ufficio condivisa in rete. Quando
il bd viene aperto e alimentato da un altro pc collegato in rete, con
frequenza  esso viene rinominato in "db1". Come posso risolvere il problema?
Grazie in anticipo.
Mauro


title: db condiviso rinominato

author: Cinzia

text:
"Mauro" <
mingar...@inwind.it
> ha scritto nel messaggio
news:BOoif.57860$65.16...@twister1.libero.it...

Ciao Mauro
probabilmente l'access del PC in questione è impostato con l'opzione per
compattare il db in uscita, e essendo aperto anche da qualcun altro la
procedura non va a buon fine per questo trovi sul disco di rete un db che si
chiama DB1.mdb.
Devi togliere da Strumenti Opzioni la spunta   a Compatta e ripristina
Database in uscita.
--
Cinzia
---------------------------------------
|
http://www.riolab.org
  |
--------------------------------------->


title: db condiviso rinominato

text:
Cinzia wrote:
> "Mauro" <
mingar...@inwind.it
> ha scritto nel messaggio
> news:BOoif.57860$65.16...@twister1.libero.it...
>> Premetto di essere alle prime armi con access e per questo non
>> riesco a risolvere questo problema: un batabase da me creato è stato
>> collocato all'interno di una cartella del mio pc d'ufficio condivisa
>> in rete. Quando il bd viene aperto e alimentato da un altro pc
>> collegato in rete, con frequenza  esso viene rinominato in "db1".
>> Come posso risolvere il problema? Grazie in anticipo.
>> Mauro
>>
> Ciao Mauro
> probabilmente l'access del PC in questione è impostato con l'opzione
> per compattare il db in uscita, e essendo aperto anche da qualcun
> altro la procedura non va a buon fine per questo trovi sul disco di
> rete un db che si chiama DB1.mdb.
> Devi togliere da Strumenti Opzioni la spunta   a Compatta e ripristina
> Database in uscita.
>>
http://www.riolab.org
  |
> --------------------------------------->
Brava Cinzia.
--
_ _
Ciao
MAssimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:
www.donkarl.com/it


title: db condiviso rinominato

text:
[CUT]
> >>
> > Ciao Mauro
> > probabilmente l'access del PC in questione è impostato con l'opzione
> > per compattare il db in uscita, e essendo aperto anche da qualcun
> > altro la procedura non va a buon fine per questo trovi sul disco di
> > rete un db che si chiama DB1.mdb.
> > Devi togliere da Strumenti Opzioni la spunta   a Compatta e ripristina
> > Database in uscita.
> >>
http://www.riolab.org
  |
> > --------------------------------------->
>
> Brava Cinzia.
>
> --
> _ _
> Ciao
> MAssimiliano Amendola
www.accessgroup.it
> Cisa - Conferenza Italiana per Sviluppatori Access
> Info:
www.donkarl.com/it
>
ciao a tutti,
come fare a questo punto a compattare e ripristinare il db, avendo
disabilitato la barra dei menu standard ed avendola sostituita con una
personalizzata?
ho provato con del codice e con una macro, ma in entrambi i casi esce un
messaggio di errore che suggerisce di usare il menu "strumenti -> utilità
database -> compatta e ripristina.." (facente parte della barra dei menu
standard (disabilitata) di cui sopra).
em.an


title: db condiviso rinominato

text:
em.an wrote:
> [CUT]
>>>>
>>> Ciao Mauro
>>> probabilmente l'access del PC in questione è impostato con l'opzione
>>> per compattare il db in uscita, e essendo aperto anche da qualcun
>>> altro la procedura non va a buon fine per questo trovi sul disco di
>>> rete un db che si chiama DB1.mdb.
>>> Devi togliere da Strumenti Opzioni la spunta   a Compatta e
>>> ripristina Database in uscita.
>>>>
http://www.riolab.org
  |
>>> --------------------------------------->
>>
>> Brava Cinzia.
>>
> ciao a tutti,
> come fare a questo punto a compattare e ripristinare il db, avendo
> disabilitato la barra dei menu standard ed avendola sostituita con una
> personalizzata?
>
> ho provato con del codice e con una macro, ma in entrambi i casi esce
> un messaggio di errore che suggerisce di usare il menu "strumenti ->
> utilità database -> compatta e ripristina.." (facente parte della
> barra dei menu standard (disabilitata) di cui sopra).
>
> em.an
Lancia il file tenendo premuto shift



title: db condiviso rinominato

text:
[CUT]
>
> Lancia il file tenendo premuto shift
> --
> _ _
> Ciao
> MAssimiliano Amendola
www.accessgroup.it
> Cisa - Conferenza Italiana per Sviluppatori Access
> Info:
www.donkarl.com/it
>
>
ciao MA, il problema, per me, risede nel fatto che ho disabilitato l'uso
dello SHIFT all'utente, ciononostante vorrei consentirgli, tramite maschera
o menu a discesa, di compattare o ripristinare il db..


title: db condiviso rinominato

text:
em.an wrote:
> [CUT]
>>
>> Lancia il file tenendo premuto shift
>> --
>>
>>
> ciao MA, il problema, per me, risede nel fatto che ho disabilitato
> l'uso dello SHIFT all'utente, ciononostante vorrei consentirgli,
> tramite maschera o menu a discesa, di compattare o ripristinare il
> db..
a parte che non capisco l'attinenza col subject...
ma mettici la compattazione alla chiusura



title: db condiviso rinominato

text:
[CUT]
 >>
 >>
> > ciao MA, il problema, per me, risede nel fatto che ho disabilitato
> > l'uso dello SHIFT all'utente, ciononostante vorrei consentirgli,
> > tramite maschera o menu a discesa, di compattare o ripristinare il
> > db..
>
> a parte che non capisco l'attinenza col subject...
> ma mettici la compattazione alla chiusura
>
> --
ciao MA, l'attinenza consiste in:
> Quando il bd viene aperto e alimentato da un altro pc collegato in rete,
> con frequenza  esso viene rinominato in "db1".
Questo accade per la stessa causa di Mauro, vale a dire che ho abilitato
la compattazione automatica all'uscita, ma essendo il db usato da più utenti
la cosa può non andare a buon fine;
il mio caso  però si differenzia per 2 motivi:
1. ho disabilitato l'uso dello SHIFT all'utente finale.
2. ho disabilitato la barra dei menu standard, e quindi non è più presente
il menu Strumenti -> Utilità database -> Compatta e ripristina..;
Vorrei dunque fare in modo che di quando in quando l'utente possa compattare
e ripristinare il db, magari attraverso del codice o una macro, ma  in
entrambi i casi esce un
messaggio di errore che suggerisce di usare il menu "strumenti -> utilità
database -> compatta e ripristina.." (facente parte della barra dei menu
standard (disabilitata) di cui sopra).
In conclusione, è possibile avere un bottone che esegue questa procedura,
senza renderla automatica ad ogni chiusura (incorrendo nell'inconveniente
Db1.mdb), bensì delegando all'utente l'onere di premere il bottone?
Grazie,
em.an


title: Data come chiave primaria

author: bc

text:
nel mio db che calcola l'orario di servizio ho impostato come chiave
primaria un campo data ...
Una volta che ho fissato il giorno di partenza (per es. 01/07/2000), č
possibile fare in modo che ad ogni nuovo record la data sia di un giorno in
piů alla precedente?
Ho provato fissando in una variabile il valore della data del promo record,
quindi aggiungendo un record e quindi scrivendo nel campo data il valore
della variabile + 1.
Mi da strani risultati, come sabato 30 dicembre 1899 ( sempre lo stesso!!!)
datemi una mano e se potete spiegatemi dov'č lo sbaglio..
.............
Me.DataGiorno = DataDiOggi
DoCmd.GoToRecord , , acNext
Me.DataGiorno = DataDiOggi + 1
..................
grazie
bce...@tiscalinet.it


title: Data come chiave primaria

author: MikyArt

text:
Devi essere dicuro che le variabili usate siano definite come data (AS
DATE).
Ciao, MikyArt.
bc <
bce...@tiscalinet.it
> wrote in message
8jna5q$b8b$1...@lacerta.tiscalinet.it...



title: Data come chiave primaria

author: Matteo Fortini

text:
Usa DateAdd
il campo data è un numero floating point e viene considerato tale se fai delle
addizioni con +.
Ciao,
    Matteo


title: Data come chiave primaria

author: lbo dal portatile

text:
>Una volta che ho fissato il giorno di partenza (per es. 01/07/2000), č
>possibile fare in modo che ad ogni nuovo record la data sia di un giorno in
>piů alla precedente?
vedi sull'help dateadd.
>datemi una mano e se potete spiegatemi dov'č lo sbaglio..
>Me.DataGiorno = DataDiOggi
>DoCmd.GoToRecord , , acNext
>Me.DataGiorno = DataDiOggi + 1
cos'e' datadioggi?  un controllo?  se anche fosse legato ad un campo,
quando passi al nuovo record sarebbe comunque null.
--
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/


title: Info generali "filosofia" di gestione DB.

author: montanaro®

text:
Scusatemi, essendo autodidatta le poche idee che ho sono un tantino
confuse, faccio un esempio per essere più chiaro:
1. Voglio creare una statistica per calcolare la dilazione media di
pagamento da contratto.
2. la formula matematica dovrebbe essere questa:
FT1*gg1 + FT2*gg2........FTn*ggn/ FT1+FT2+..........FTn (è un esempio
non discutiamo sull'esattezza)
3. Potrei:
    - farla con una query di selezione
    - crearla in un modulo (in questo caso non sono bravo, dovrei
cercare di convertire la Select).
4. In base a cosa voi decidete  se usare la query o inserire tutto in
un modulo?
    Da notare che dopo 20 statistiche di questo tipo potrei avere già
20 query diverse.

Potete aiutarmi a chiarirmi un po le idee?
Grazie


author: ciroteo

text:

ciao! io direi che potresti avere una tabella in cui memorizzi in un
campo memo il testo dei record, la stringa sql delle query che man mano
andrai a creare,
e magari in altri campi (tipo nome query e oggetto) memorizzi
informazioni descrittive sulla funzione della query.
poi attraverso una form selezioni la query che vorresti mandare in
esecuzione.
Agendo tramite la funzione create query def, crei una query temporanea
e la mandi in esecuzione, lavorando poi con i dati secondo il bisogno.
Se vuoi un esempio te lo posto.
Non ho però colto cosa vorresti mettere in un modulo.


text:
ciroteo ha scritto:

Il modulo l'ho citato a causa del casino che ho in testa!
Se vuoi mandarmi l'esempio, questa è la mail, però di solito qui si
mette tutto a disposizione di tutti, come fare?:
jorjo67 at
gmail.com
Grazie 1000 sei gentilissimo!


title: Apertura ComoBox

text:
"Andrea" <
and...@freemail.it
> ha scritto nel messaggio
news:8htoj6$v55$1...@agnus.ngi.it...
> E' possibile far aprire automaticamente una ComboBox appena viene
> selezionata ?
>
> grazie
>
> Andrea
>
>
>
me.comboname.setfocus
me.comboname.dropdown


title: Pdf For Vb Access 97

author: Davide Spagnoli

text:
Vorrei sviluppare nel mio gestionale:
la fatturazione in PDF via E-mail.
Dovresti stampare un PDF per
ogni fattura/e di ogni singolo cliente,
inserire il file con l'indirizzo E-mail
del cliente in posta elettronica.
Adesso uso l'ocx di MAPI
per inviare direttamente un file .htm
in posta elettronica. Questo funziona a meraviglia...
Se qualcuno conosce un OCX PDF free che
svolge la funzione di:
da Vb. stampa il file (e questo lo fanno in tanti)
e lo invia nel comando Mapi ma però da ocx
o da codice Vb.
Grazie mille a chi mi darà un suggerimento
per ampliare il mio gestionale; ci sto lavorando dal 1998...
Davide


title: Pdf For Vb Access 97

author: Eugenio

text:
"Davide Spagnoli" <
spag...@spagnoli.it
> ha scritto nel messaggio
news:c11ng9$4br$1...@lacerta.tiscalinet.it...

Ho sviluppato qualcosa di simile recentemente. Non erano fatture, ma
documenti per importazioni.
Però non ho utilizzato OCX,  Ghostscript e GSView e, inoltre, ho installato
sul pc anche una stampante che potesse generare file .PS (la stampante come
hardware non esiste). Purtroppo non ti posso specificare il mio codice,
perchè in questo momento mi è difficile estrarlo dal programma. In sostanza
prima stampo il documento in formato PS e poi con GSView lo converto in PDF
o altri formati.
Comunque nel sito troverai la tutta la documentazione necessaria.
Sito ufficiale è
http://www.cs.wisc.edu/~ghost/
GhostScript lo puoi trovare al sito
http://www.cs.wisc.edu/~ghost/doc/AFPL/get813.htm
GSView lo puoi trovare al sito
http://www.cs.wisc.edu/~ghost/gsview/get46.htm
Esempi
http://www.cs.wisc.edu/~ghost/doc/gsapi.htm
Inoltre puoi trovare nei siti italiani PDFWriter (ricerca così) dichiarato
free, ma ho qualche dubbio che sia completamente free.
Ciao
Eugenio


title: Pdf For Vb Access 97

text:
Scusami, ma nella fretta ho scritto :
"Perň non ho utilizzato OCX,  Ghostscript e GSView ... "
Volevo dire : " Perň non ho utilizzato OCX,  ma Ghostscript e GSView ..."
Ciao
Eugenio


title: Pdf For Vb Access 97

text:
Grazie mille, Eugenio
Proverò a far su qualcosa...
In caso contrario ci si vede qui...
Ciao, Davide - Mantova
"Davide Spagnoli" <
spag...@spagnoli.it
> ha scritto nel messaggio
news:c11ng9$4br$1...@lacerta.tiscalinet.it...



title: Pdf For Vb Access 97

text:
Sono andato a vedere!
Dove tro la sintassi?
"Eugenio" <Ci...@Eugenio.it> ha scritto nel messaggio
news:c11t0b$7li$1...@lacerta.tiscalinet.it...



title: Pdf For Vb Access 97

text:
"Davide Spagnoli" <
spag...@spagnoli.it
> ha scritto nel messaggio
news:c11tgl$823$1...@lacerta.tiscalinet.it...
> Sono andato a vedere!
> Dove tro la sintassi?
Nel file "gsapi_vb.zip" c'è un file che si chiama "gsapi_vb6.bas". Aprendolo
con VB e troverai il modulo.
Per comodità ti riporto il contenuto
****************************************************************************
****************
****************************************************************************
****************
****************************************************************************
****************
' Copyright (c) 2002 Dan Mount and Ghostgum Software Pty Ltd
'
' Permission is hereby granted, free of charge, to any person obtaining
' a copy of this software and associated documentation files (the
' "Software"), to deal in the Software without restriction, including
' without limitation the rights to use, copy, modify, merge, publish,
' distribute, sublicense, and/or sell copies of the Software, and to
' permit persons to whom the Software is furnished to do so, subject to
' the following conditions:
'
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
' MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
' BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
' ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
' CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
' This is an example of how to call the Ghostscript DLL from
' Visual Basic 6.  This example converts
colorcir.ps
 to PDF.
' The display device is not supported.
'
' This code is not compatible with
VB.NET
.  There is another
' example which does work with
VB.NET
.  Differences include:
' 1.
VB.NET
 uses GCHandle to get pointer
'    VB6 uses StrPtr/VarPtr
' 2.
VB.NET
 Integer is 32bits, Long is 64bits
'    VB6 Integer is 16bits, Long is 32bits
' 3.
VB.NET
 uses IntPtr for pointers
'    VB6 uses Long for pointers
' 4.
VB.NET
 strings are always Unicode
'    VB6 can create an ANSI string
' See the following URL for some VB6 /
VB.NET
 details
'
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvb600/html/vb6tovbdotnet.asp
Option Explicit
'------------------------------------------------
'API Calls Start
'------------------------------------------------
'Win32 API
'GhostScript API
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal
dest As Long, ByVal source As Long, ByVal bytes As Long)
Private Declare Function gsapi_revision Lib "gsdll32.dll" (ByVal
pGSRevisionInfo As Long, ByVal intLen As Long) As Long
Private Declare Function gsapi_new_instance Lib "gsdll32.dll" (ByRef
lngGSInstance As Long, ByVal lngCallerHandle As Long) As Long
Private Declare Function gsapi_set_stdio Lib "gsdll32.dll" (ByVal
lngGSInstance As Long, ByVal gsdll_stdin As Long, ByVal gsdll_stdout As
Long, ByVal gsdll_stderr As Long) As Long
Private Declare Sub gsapi_delete_instance Lib "gsdll32.dll" (ByVal
lngGSInstance As Long)
Private Declare Function gsapi_init_with_args Lib "gsdll32.dll" (ByVal
lngGSInstance As Long, ByVal lngArgumentCount As Long, ByVal lngArguments As
Long) As Long
Private Declare Function gsapi_run_file Lib "gsdll32.dll" (ByVal
lngGSInstance As Long, ByVal strFileName As String, ByVal intErrors As Long,
ByVal intExitCode As Long) As Long
Private Declare Function gsapi_exit Lib "gsdll32.dll" (ByVal lngGSInstance
As Long) As Long
'------------------------------------------------
'API Calls End
'------------------------------------------------
'------------------------------------------------
'UDTs Start
'------------------------------------------------
Private Type GS_Revision
    strProduct As Long
    strCopyright As Long
    intRevision As Long
    intRevisionDate As Long
End Type
'------------------------------------------------
'UDTs End
'------------------------------------------------
'------------------------------------------------
'Callback Functions Start
'------------------------------------------------
'These are only required if you use gsapi_set_stdio
Public Function gsdll_stdin(ByVal intGSInstanceHandle As Long, ByVal strz As
Long, ByVal intBytes As Long) As Long
    ' We don't have a console, so just return EOF
    gsdll_stdin = 0
End Function
Public Function gsdll_stdout(ByVal intGSInstanceHandle As Long, ByVal strz
As Long, ByVal intBytes As Long) As Long
    ' If you can think of a more efficient method, please tell me!
    ' We need to convert from a byte buffer to a string
    ' First we create a byte array of the appropriate size
    Dim aByte() As Byte
    ReDim aByte(intBytes)
    ' Then we get the address of the byte array
    Dim ptrByte As Long
    ptrByte = VarPtr(aByte(0))
    ' Then we copy the buffer to the byte array
    CopyMemory ptrByte, strz, intBytes
    ' Then we copy the byte array to a string, character by character
    Dim str As String
    Dim i As Long
    For i = 0 To intBytes - 1
        str = str + Chr(aByte(i))
    Next
    ' Finally we output the message
    Debug.Print (str)
    MsgBox (str)
    gsdll_stdout = intBytes
End Function
Public Function gsdll_stderr(ByVal intGSInstanceHandle As Long, ByVal strz
As Long, ByVal intBytes As Long) As Long
    gsdll_stderr = gsdll_stdout(intGSInstanceHandle, strz, intBytes)
End Function
'------------------------------------------------
'Callback Functions End
'------------------------------------------------
'------------------------------------------------
'User Defined Functions Start
'------------------------------------------------
Public Function AnsiZtoString(ByVal strz As Long) As String
    Rem We need to convert from a byte buffer to a string
    Dim byteCh(1) As Byte
    Dim bOK As Boolean
    bOK = True
    Dim ptrByte As Long
    ptrByte = VarPtr(byteCh(0))
    Dim j As Long
    j = 0
    Dim str As String
    While bOK
        ' This is how to do pointer arithmetic!
        CopyMemory ptrByte, strz + j, 1
        If byteCh(0) = 0 Then
            bOK = False
        Else
            str = str + Chr(byteCh(0))
        End If
        j = j + 1
    Wend
    AnsiZtoString = str
End Function
Public Function CheckRevision(ByVal intRevision As Long) As Boolean
    ' Check revision number of Ghostscript
    Dim intReturn As Long
    Dim udtGSRevInfo As GS_Revision
    intReturn = gsapi_revision(VarPtr(udtGSRevInfo), 16)
    Dim str As String
    str = "Revision=" & udtGSRevInfo.intRevision
    str = str & "  RevisionDate=" & udtGSRevInfo.intRevisionDate
    str = str & "  Product=" & AnsiZtoString(udtGSRevInfo.strProduct)
    str = str & "  Copyright = " & AnsiZtoString(udtGSRevInfo.strCopyright)
    Debug.Print (str)
    MsgBox (str)
    If udtGSRevInfo.intRevision = intRevision Then
        CheckRevision = True
    Else
        CheckRevision = False
    End If
End Function
Public Function CallGS(ByRef astrGSArgs() As String) As Boolean
    Dim intReturn As Long
    Dim intGSInstanceHandle As Long
    Dim aAnsiArgs() As String
    Dim aPtrArgs() As Long
    Dim intCounter As Long
    Dim intElementCount As Long
    Dim iTemp As Long
    Dim callerHandle As Long
    Dim ptrArgs As Long
    ' Print out the revision details.
    ' If we want to insist on a particular version of Ghostscript
    ' we should check the return value of CheckRevision().
    CheckRevision (704)
    ' Load Ghostscript and get the instance handle
    intReturn = gsapi_new_instance(intGSInstanceHandle, callerHandle)
    If (intReturn < 0) Then
        CallGS = False
        Return
    End If
    ' Capture stdio
    intReturn = gsapi_set_stdio(intGSInstanceHandle, AddressOf gsdll_stdin,
AddressOf gsdll_stdout, AddressOf gsdll_stderr)
    If (intReturn >= 0) Then
        ' Convert the Unicode strings to null terminated ANSI byte arrays
        ' then get pointers to the byte arrays.
        intElementCount = UBound(astrGSArgs)
        ReDim aAnsiArgs(intElementCount)
        ReDim aPtrArgs(intElementCount)
        For intCounter = 0 To intElementCount
            aAnsiArgs(intCounter) = StrConv(astrGSArgs(intCounter),
vbFromUnicode)
            aPtrArgs(intCounter) = StrPtr(aAnsiArgs(intCounter))
        Next
        ptrArgs = VarPtr(aPtrArgs(0))
        intReturn = gsapi_init_with_args(intGSInstanceHandle,
intElementCount + 1, ptrArgs)
        ' Stop the Ghostscript interpreter
        gsapi_exit (intGSInstanceHandle)
    End If
    ' release the Ghostscript instance handle
    gsapi_delete_instance (intGSInstanceHandle)
    If (intReturn >= 0) Then
        CallGS = True
    Else
        CallGS = False
    End If
End Function
Private Function ConvertFile() As Boolean
    Dim astrArgs(10) As String
    astrArgs(0) = "ps2pdf" 'The First Parameter is Ignored
    astrArgs(1) = "-dNOPAUSE"
    astrArgs(2) = "-dBATCH"
    astrArgs(3) = "-dSAFER"
    astrArgs(4) = "-r300"
    astrArgs(5) = "-sDEVICE=pdfwrite"
    astrArgs(6) = "-sOutputFile=c:\out.pdf"
    astrArgs(7) = "-c"
    astrArgs(8) = ".setpdfwrite"
    astrArgs(9) = "-f"
    astrArgs(10) = "c:\gs\gs7.04\examples\
colorcir.ps
"
    ConvertFile = CallGS(astrArgs)
End Function
Private Function TestGS() As Boolean
    Dim astrArgs(3) As String
    astrArgs(0) = "gs" 'The First Parameter is Ignored
    astrArgs(1) = "-dBATCH"
    astrArgs(2) = "-c"
    astrArgs(3) = "(Hello world) print"
    TestGS = CallGS(astrArgs)
End Function
'------------------------------------------------
'User Defined Functions End
'------------------------------------------------
Sub Main()
    Call ConvertFile
    'Call TestGS
    MsgBox ("Done")
End Sub
****************************************************************************
****************
****************************************************************************
****************
****************************************************************************
****************
Ciao
Eugenio


title: Pdf For Vb Access 97

text:
Provo e che DIO mi aiuti...
Ciao e grazie
Davide
"Eugenio" <Ci...@Eugenio.it> ha scritto nel messaggio
news:c11tv2$966$1...@lacerta.tiscalinet.it...



title: Pdf For Vb Access 97

author: ALESSANDRO Baraldi

text:
"Eugenio" <Ci...@Eugenio.it> ha scritto nel messaggio
news:c11tv2$966$1...@lacerta.tiscalinet.it...
>
> "Davide Spagnoli" <
spag...@spagnoli.it
> ha scritto nel messaggio
> news:c11tgl$823$1...@lacerta.tiscalinet.it...
> > Sono andato a vedere!
> > Dove tro la sintassi?
>
> Nel file "gsapi_vb.zip" c'č un file che si chiama "gsapi_vb6.bas".
Aprendolo
> con VB e troverai il modulo.
>
[CUT]
Hai scelto la strada piů difficile....!
Se usavi un pacchetto Free del tipo CUTEPDF che non fa
altro che installare una Stampante Virtuale (Distiller) ti bastava
impostare la Stampante predefinita a "Distiller" e mandare in stampa.
Ciao.
@Alex.


title: Pdf For Vb Access 97

text:
Allessandro, ho capito che funziona...
Ma, se devo stampare 70/80 fatture...
Vorrei pilotarlo da codice...
Mi deve stampare per ogni cliente
un pdf e invialdo in posta elettronica con oxc MAPI (ho questo)
Prima o poi ci riesco...
"ALESSANDRO Baraldi" <
ik2...@libero.it
> ha scritto nel messaggio
news:c1327g$khe$1...@lacerta.tiscalinet.it...



title: Pdf For Vb Access 97

text:
"Davide Spagnoli" <
spag...@spagnoli.it
> ha scritto nel messaggio
news:c13aih$qg2$1...@lacerta.tiscalinet.it...
> Allessandro, ho capito che funziona...
> Ma, se devo stampare 70/80 fatture...
> Vorrei pilotarlo da codice...
> Mi deve stampare per ogni cliente
> un pdf e invialdo in posta elettronica con oxc MAPI (ho questo)
> Prima o poi ci riesco...
>
Si certamente hai ragione per gestire grossi quantitativi
è necessario ricorrere a qualche cosa di Automatico
infattti io ho usato CUTEPDF nella versione da 30 "Euri"
a carico dell'Utente finale e 10 righe di codice con WinSock
che guarda caso è pure un OCX.........!!!!
Saluti.
@Alex.


title: Pdf For Vb Access 97

author: cidi

text:
"ALESSANDRO Baraldi" <
ik2...@libero.it
> ha scritto nel messaggio
news:c1327g$khe$1...@lacerta.tiscalinet.it...

Ciao Alex
Mi daresti un aiutino a far capire al Sig. Davide Spagnoli che dovrebbe
rispondere dopo il testo e non prima? ;-)
Daniele


title: Pdf For Vb Access 97

text:
"cidi" <
dadonzin...@tin.it
> ha scritto nel messaggio
news:4naZb.346045$_P.11...@news4.tin.it...

Si, sig. Daniele... Ho capito
Ciao!