Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Creazione campo memo con "INSERT INTO"

239 views
Skip to first unread message

Nina

unread,
Jul 1, 2010, 7:34:44 AM7/1/10
to
Salve a tutti,
ho il seguente problema: in una query di creazione tabella vi sono alcuni
campi di tipo memo, ma questi vengono convertiti in formato Testo ed il
testo troncato. Ho provato ad impostare la loro definizione in "PARAMETERS",
ma non funziona .

Es.: PARAMETERS AliquoteIva.Esenzione Text;
SELECT AliquoteIva.Esenzione INTO TabEse
FROM AliquoteIva;

Quando la eseguo, mi viene richiesto il parametro "esenzione"

Come posso fare?

Grazie a tutti

--
Nina


Popi - TheBadHabits

unread,
Jul 1, 2010, 8:54:35 AM7/1/10
to

Ciao!

AFAIK il tipo di campo da creare viene determinato nel momento in cui
viene eseguita la SELECT, ed il SQL (di Access?) non mette a
disposizione "manipolatori" di tipo idonei alla bisogna.

Usare una funzione VBA propria non risolve comunque dato che il tipo
di dati memo non esiste, e restituire una string ci riporta al punto
di partenza :(

Quindi, l'unica soluzione che mi viene in mente è (ma l'avrai già
pensata tu, vero?):
SELECT TblDati.SarebbeUnCampoMemo INTO NuovaTbl FROM TblDati WHERE
FALSE;
ALTER TABLE NuovaTbl ALTER COLUMN SarebbeUnCampoMemo LONGTEXT;
INSERT INTO NuovaTbl SELECT * FROM TblDati;

HTH

Popi

Nina

unread,
Jul 1, 2010, 9:30:35 AM7/1/10
to

"Popi - TheBadHabits" <rlu...@yahoo.com> ha scritto nel messaggio
news:a761e1a4-7c40-429a...@d16g2000yqb.googlegroups.com...

On 1 Lug, 13:34, "Nina" <paninotCancellaredopopani...@yahoo.it> wrote:
> Salve a tutti,
> ho il seguente problema: in una query di creazione tabella vi sono alcuni
> campi di tipo memo, ma questi vengono convertiti in formato Testo ed il
> testo troncato. Ho provato ad impostare la loro definizione in
> "PARAMETERS",
> ma non funziona .
>
> Es.: PARAMETERS AliquoteIva.Esenzione Text;
> SELECT AliquoteIva.Esenzione INTO TabEse
> FROM AliquoteIva;
>
> Quando la eseguo, mi viene richiesto il parametro "esenzione"
>
> Come posso fare?

>>Ciao!

>>AFAIK il tipo di campo da creare viene determinato nel momento in cui
>>viene eseguita la SELECT, ed il SQL (di Access?) non mette a
>>disposizione "manipolatori" di tipo idonei alla bisogna.

>>Usare una funzione VBA propria non risolve comunque dato che il tipo
>>di dati memo non esiste, e restituire una string ci riporta al punto
>>di partenza :(

>>Quindi, l'unica soluzione che mi viene in mente è (ma l'avrai già
>>pensata tu, vero?):

Si, volevo sapere se c'è un modo diretto per risolvere il problema, cioè se
fosse possibile farlo direttamente nell' SQL "INSERT INTO". Grazie comunque
:)

>>SELECT TblDati.SarebbeUnCampoMemo INTO NuovaTbl FROM TblDati WHERE
>>FALSE;
>>ALTER TABLE NuovaTbl ALTER COLUMN SarebbeUnCampoMemo LONGTEXT;
>>INSERT INTO NuovaTbl SELECT * FROM TblDati;

>>HTH

>>Popi

Ciao

Nina


Karl Donaubauer

unread,
Jul 2, 2010, 4:34:31 AM7/2/10
to

Il troncamento e cambio del tipo non è normale.
Se il campo è definito come tipo memo nella tabella AliquoteIva
dovrebb'essere anche un memo nella nuova tabella e prendere
tutti i dati. Certo devi togliere il parametro dalla query. Cioè usare:

SELECT AliquoteIva.Esenzione INTO TabEse
FROM AliquoteIva;

Se con questa stringa SQL viene troncato di nuovo:
"AliquoteIva" è una tabella di Access/JET o di un sistema diverso?
Quale versione di Access usi?
Il mdb o accdb è nel formato di quale versione di Access?

--
Ciao
Karl
*********
Access FAQ: www.donkarl.com/it


Popi - TheBadHabits

unread,
Jul 2, 2010, 4:58:43 AM7/2/10
to

Guten Tag Karl :)

Premessa: test fatto con mdb in AXP.

Se ho una Tabella1 (Campo1 Memo, Campo2 Testo, Campo3 Numerico) e
faccio una
SELECT Tabella1.Campo1, Tabella1.Campo2, Tabella1.Campo3 INTO Tabella2
FROM Tabella1;
ottengo una Tabella2 con struttura identica all'originale.

Se la query fosse
SELECT Tabella1.Campo1 AS NuovoMemo, Tabella1.Campo2, Tabella1.Campo3
INTO Tabella2 FROM Tabella1;
la struttura di Tabella2 è ancora identica all'originale.

Se, invece, eseguo
SELECT [Tabella1].[Campo1] & "" AS NuovoMemo, Tabella1.Campo2,
Tabella1.Campo3 INTO Tabella2 FROM Tabella1;
il Campo1 diventa Testo (255).
E questo anche se il Campo1 originale contiene dati oltre i 255
caratteri, ma potrebbe starci visto che lo stiamo "manipolando" con
una stringa.

Solo che il comportamento è identico facendo una
SELECT [Tabella1].[Campo1] & [Tabella1].[Campo1] AS NuovoMemo,
Tabella1.Campo2, Tabella1.Campo3 INTO Tabella2 FROM Tabella1;

La domanda allora diventa: svolgere una qualsiasi operazione su un
campo memo lo converte da LongText a Text?

Nina: stai semplicemente accodando dati (come nell'esempio che hai
dato) o li stai manipolando in qualche modo?

HTH

Popi

Karl Donaubauer

unread,
Jul 2, 2010, 5:21:51 AM7/2/10
to
Popi - TheBadHabits wrote:
> Karl Donaubauer wrote:
>>...

>> SELECT AliquoteIva.Esenzione INTO TabEse
>> FROM AliquoteIva;
>>
>> Se con questa stringa SQL viene troncato di nuovo:
>> "AliquoteIva" è una tabella di Access/JET o di un sistema diverso?
>> Quale versione di Access usi?
>> Il mdb o accdb è nel formato di quale versione di Access?
> ...

> Se, invece, eseguo
> SELECT [Tabella1].[Campo1] & "" AS NuovoMemo,
> ...

> il Campo1 diventa Testo (255).
> ...

> Solo che il comportamento è identico facendo una
> SELECT [Tabella1].[Campo1] & [Tabella1].[Campo1] AS NuovoMemo,
> ...

> La domanda allora diventa: svolgere una qualsiasi operazione su un
> campo memo lo converte da LongText a Text?
> ...

Sì, perché in questi casi Access "ottimizza" ad un Text.
Per questo ho chiesto esplicitamente con la stringa senza operazione. ;-)

Popi - TheBadHabits

unread,
Jul 2, 2010, 6:21:04 AM7/2/10
to
On 2 Lug, 11:21, "Karl Donaubauer" <NoS...@donkarl.com> wrote:
> Popi - TheBadHabits wrote:
> > Karl Donaubauer wrote:
> >>...
> >> SELECT AliquoteIva.Esenzione INTO TabEse
> >> FROM AliquoteIva;
>
> >> Se con questa stringa SQL viene troncato di nuovo:
> >> "AliquoteIva" è una tabella di Access/JET o di un sistema diverso?
> >> Quale versione di Access usi?
> >> Il mdb o accdb è nel formato di quale versione di Access?
> > ...
> > La domanda allora diventa: svolgere una qualsiasi operazione su un
> > campo memo lo converte da LongText a Text?
>
> Sì, perché in questi casi Access "ottimizza" ad un Text.

*MUMBLE* ... "pessimizza" forse ci starebbe meglio, ma preferisco
pensare che le argentee teste d'uovo in MS hanno avuto le loro buone
ragioni :)

> Per questo ho chiesto esplicitamente con la stringa senza operazione. ;-)

Ah ... non l'avevo intesa anche in quel senso, pensavo ti riferissi
solo alla questione PARAMETERS :)

Ciao!

Popi

Nina

unread,
Jul 2, 2010, 9:08:52 AM7/2/10
to

"Karl Donaubauer" <NoS...@donkarl.com> ha scritto nel messaggio
news:895mla...@mid.individual.net...

> Nina wrote:
>> ho il seguente problema: in una query di creazione tabella vi sono
>> alcuni campi di tipo memo, ma questi vengono convertiti in formato
>> Testo ed il testo troncato. Ho provato ad impostare la loro
>> definizione in "PARAMETERS", ma non funziona .
>>
>> Es.: PARAMETERS AliquoteIva.Esenzione Text;
>> SELECT AliquoteIva.Esenzione INTO TabEse
>> FROM AliquoteIva;
>>
>> Quando la eseguo, mi viene richiesto il parametro "esenzione"
>>
>> Come posso fare?
>
> Il troncamento e cambio del tipo non è normale.
> Se il campo è definito come tipo memo nella tabella AliquoteIva

Ciao,
sì, scusatemi, qualche precisazione è d'obbligo.

La tabella AliquoteIva è una query, in cui definisco il campo esenzione
concatendando due campi che nella tabella d'origine (in db MySQL) sono di
tipo TEXT.

> dovrebb'essere anche un memo nella nuova tabella e prendere
> tutti i dati. Certo devi togliere il parametro dalla query.

Il parametro l'ho aggiunto, perchè in un post veniva indicato come soluzione
per l'aggiunta (in questo esempio si trattava di nuovi campi) di campi memo
ad un istruzione INSERT INTO.

> Cioè usare:
>
> SELECT AliquoteIva.Esenzione INTO TabEse
> FROM AliquoteIva;
>
> Se con questa stringa SQL viene troncato di nuovo:
> "AliquoteIva" è una tabella di Access/JET o di un sistema diverso?

le tabelle d'origine sono tabelle MYSQL collegate tramite ODBC . Nella
Tabella MySQL i campi d'origine della colonna calcolata "esenzione" sono di
tipo TEXT.


> Quale versione di Access usi?
> Il mdb o accdb è nel formato di quale versione di Access?

Uso come front-end un mdb creato Access 2002 nel formato predefinito 2000.

Grazie

Ciao,

Nina

Nina

unread,
Jul 2, 2010, 9:15:58 AM7/2/10
to

"Nina" <paninotCancell...@yahoo.it> ha scritto nel messaggio
news:4c2de4ea$0$6831$5fc...@news.tiscali.it...

>
> "Karl Donaubauer" <NoS...@donkarl.com> ha scritto nel messaggio
> news:895mla...@mid.individual.net...
>> Nina wrote:
CUT

>> Il troncamento e cambio del tipo non è normale.
>> Se il campo è definito come tipo memo nella tabella AliquoteIva
>
> Ciao,
> sì, scusatemi, qualche precisazione è d'obbligo.
>
> La tabella AliquoteIva è una query, in cui definisco il campo esenzione
> concatendando due campi che nella tabella d'origine (in db MySQL) sono di
> tipo TEXT.

Non ho bevuto :)
ovviamente intendevo dire che "AliquoteIva presente nella clausola FROM non
è una tabella ma è una query"

Ciao,
Nina

>
>> dovrebb'essere anche un memo nella nuova tabella e prendere
>> tutti i dati. Certo devi togliere il parametro dalla query.
>

CUT

>
>


0 new messages