Discussione:
Lunghezza max stringhe
(troppo vecchio per rispondere)
ingrid
2006-10-16 08:48:14 UTC
Permalink
Salve,
mi rendo conto possa essere una domanda stupida o magari fatta e
rifatta, ma ho provato aleggermi tutti i post vecchi e a fare ricerche ma
non ho trovato nulla in merito. Devo fare un SQl all'interno di VBA ma la
lunghezza massima delle stringhe è di 255, per cui avendo una streinga SQL
più lunga non mi permette di eseguirla in modo corretto me la tronca. Esiste
un tipo di dato più lungo che permetta di creare stringhe SQL di lunghezza
variabile.

Grazie mille a tutti e scusate ancora per la domanda forse ovvia.
Ingrid
MA
2006-10-16 09:21:16 UTC
Permalink
Post by ingrid
Salve,
mi rendo conto possa essere una domanda stupida o magari fatta e
rifatta, ma ho provato aleggermi tutti i post vecchi e a fare
ricerche ma non ho trovato nulla in merito. Devo fare un SQl
all'interno di VBA ma la lunghezza massima delle stringhe è di 255,
per cui avendo una streinga SQL più lunga non mi permette di
eseguirla in modo corretto me la tronca. Esiste un tipo di dato più
lungo che permetta di creare stringhe SQL di lunghezza variabile.
Grazie mille a tutti e scusate ancora per la domanda forse ovvia.
Ingrid
Con MEmo hai 65.000 e rotti caratteri. Ti bastano?
--
--
Massimiliano Amendola
www.accessgroup.it
Il sito italiano di svilupatori Access
www.donkarl.com/it/cisa
Alessandro Baraldi
2006-10-16 09:34:54 UTC
Permalink
Post by ingrid
Salve,
mi rendo conto possa essere una domanda stupida o magari fatta e
rifatta, ma ho provato aleggermi tutti i post vecchi e a fare ricerche ma
non ho trovato nulla in merito. Devo fare un SQl all'interno di VBA ma la
lunghezza massima delle stringhe è di 255, per cui avendo una streinga SQL
più lunga non mi permette di eseguirla in modo corretto me la tronca. Esiste
un tipo di dato più lungo che permetta di creare stringhe SQL di lunghezza
variabile.
Grazie mille a tutti e scusate ancora per la domanda forse ovvia.
Ingrid
Una precisazione.

Non è la stringa ad avere il limite a 255 caratteri, ma il Campo di
tipo Testo....!

Usa il MEMO come ti ha suggerito MA.

@Alex
ingrid
2006-10-16 10:19:39 UTC
Permalink
Post by ingrid
Salve,
mi rendo conto possa essere una domanda stupida o magari fatta e
rifatta, ma ho provato aleggermi tutti i post vecchi e a fare ricerche ma
non ho trovato nulla in merito. Devo fare un SQl all'interno di VBA ma la
lunghezza massima delle stringhe è di 255, per cui avendo una streinga SQL
più lunga non mi permette di eseguirla in modo corretto me la tronca. Esiste
un tipo di dato più lungo che permetta di creare stringhe SQL di lunghezza
variabile.
Grazie mille a tutti e scusate ancora per la domanda forse ovvia.
Ingrid
Una precisazione.

Non è la stringa ad avere il limite a 255 caratteri, ma il Campo di
tipo Testo....!

Usa il MEMO come ti ha suggerito MA.

@Alex

Il tipo di dato MEMO mi basterebbe eccome, solo che se lo dichiaro come tipo
dato in VBA mi da
errore di compilazione per: Tipo definito dall'utente non definito, io l'ho
dichiarato nel seguente modo:
Dim stringa As Memo

Grazie ancora!
Ingrid
eSQueL
2006-10-16 10:24:58 UTC
Permalink
Post by Alessandro Baraldi
Post by ingrid
Salve,
mi rendo conto possa essere una domanda stupida o magari fatta e
rifatta, ma ho provato aleggermi tutti i post vecchi e a fare ricerche ma
non ho trovato nulla in merito. Devo fare un SQl all'interno di VBA ma la
lunghezza massima delle stringhe è di 255, per cui avendo una streinga SQL
più lunga non mi permette di eseguirla in modo corretto me la tronca. Esiste
un tipo di dato più lungo che permetta di creare stringhe SQL di lunghezza
variabile.
Grazie mille a tutti e scusate ancora per la domanda forse ovvia.
Ingrid
Una precisazione.
Non è la stringa ad avere il limite a 255 caratteri, ma il Campo di
tipo Testo....!
Usa il MEMO come ti ha suggerito MA.
@Alex
Il tipo di dato MEMO mi basterebbe eccome, solo che se lo dichiaro come
tipo dato in VBA mi da
errore di compilazione per: Tipo definito dall'utente non definito, io l'ho
Dim stringa As Memo
Grazie ancora!
Ingrid
Non è che non torni mai a capo? .... " & _ ... eccetera? :)

Ciao eSQueL
eSQueL
2006-10-16 10:36:17 UTC
Permalink
Post by eSQueL
Post by ingrid
Il tipo di dato MEMO mi basterebbe eccome, solo che se lo dichiaro come
tipo dato in VBA mi da
errore di compilazione per: Tipo definito dall'utente non definito, io l'ho
Dim stringa As Memo
Grazie ancora!
Ingrid
Non è che non torni mai a capo? .... " & _ ... eccetera? :)
Ciao eSQueL
Mi spiego meglio. Prova a dividere la stringa con la sequenza [" & _] in
questo modo:

rst.Open "SELECT BANDA_BASSOTTI.* " & _
"FROM BANDA_BASSOTTI " & _
"WHERE (BANDA_BASSOTTI.ID)=6111;", ....
Ciao.

eSQueL
ingrid
2006-10-16 10:58:07 UTC
Permalink
Post by eSQueL
Post by eSQueL
Post by ingrid
Il tipo di dato MEMO mi basterebbe eccome, solo che se lo dichiaro come
tipo dato in VBA mi da
errore di compilazione per: Tipo definito dall'utente non definito, io l'ho
Dim stringa As Memo
Grazie ancora!
Ingrid
Non è che non torni mai a capo? .... " & _ ... eccetera? :)
Ciao eSQueL
Mi spiego meglio. Prova a dividere la stringa con la sequenza [" & _] in
rst.Open "SELECT BANDA_BASSOTTI.* " & _
"FROM BANDA_BASSOTTI " & _
"WHERE (BANDA_BASSOTTI.ID)=6111;", ....
Ciao.
eSQueL
Massimiliano mi ha mandato una mail suggerendomi di utilizzare il tipo di
dato Variant e ora funziona.
Grazie mille per la Vostra disponibilità
Ciao
Ingrid
Alessandro Baraldi
2006-10-16 11:24:55 UTC
Permalink
Post by ingrid
Post by eSQueL
Post by eSQueL
Post by ingrid
Il tipo di dato MEMO mi basterebbe eccome, solo che se lo dichiaro come
tipo dato in VBA mi da
errore di compilazione per: Tipo definito dall'utente non definito, io l'ho
Dim stringa As Memo
Grazie ancora!
Ingrid
Non è che non torni mai a capo? .... " & _ ... eccetera? :)
Ciao eSQueL
Mi spiego meglio. Prova a dividere la stringa con la sequenza [" & _] in
rst.Open "SELECT BANDA_BASSOTTI.* " & _
"FROM BANDA_BASSOTTI " & _
"WHERE (BANDA_BASSOTTI.ID)=6111;", ....
Ciao.
eSQueL
Massimiliano mi ha mandato una mail suggerendomi di utilizzare il tipo di
dato Variant e ora funziona.
Grazie mille per la Vostra disponibilità
Ciao
Ingrid
A mio avviso è un suggerimento errato.

Basta leggere l'Help per vedere che:

String
(lunghezza variabile) 10 byte + lunghezza stringa Da 0 a circa 2
miliardi

Da cui si evince che non è possibile avere una limitazione a
255...!!!!

Il Variant si usa quando non sai a priori il tipo di dato oltretutto mi
pare chiaro che sarebbe
solo uno spreco di risorse come dice l'help:

Variant
(con caratteri) 22 byte + lunghezza stringa Stesso intervallo di String
a lunghezza variabile

La dichiarazione di tipo STRINGA è quello che serve e devi usare
quello.

Ritengo che tu stia sbagliando la composizione della dicitura SQL
tentando di concatenare
in modo erato la stringa....!

Ti consiglio di pensarci meglio o di evidenziarci il modo in cui stai
tentando di rendere
operativa la sintassi....!

@Alex
MA
2006-10-16 11:30:12 UTC
Permalink
Post by Alessandro Baraldi
Post by ingrid
Post by eSQueL
Post by eSQueL
Post by ingrid
Il tipo di dato MEMO mi basterebbe eccome, solo che se lo
dichiaro come tipo dato in VBA mi da
errore di compilazione per: Tipo definito dall'utente non
definito, io l'ho
Dim stringa As Memo
Grazie ancora!
Ingrid
Non è che non torni mai a capo? .... " & _ ... eccetera? :)
Ciao eSQueL
Mi spiego meglio. Prova a dividere la stringa con la sequenza [" &
rst.Open "SELECT BANDA_BASSOTTI.* " & _
"FROM BANDA_BASSOTTI " & _
"WHERE (BANDA_BASSOTTI.ID)=6111;", ....
Ciao.
eSQueL
Massimiliano mi ha mandato una mail suggerendomi di utilizzare il
tipo di dato Variant e ora funziona.
Grazie mille per la Vostra disponibilità
Ciao
Ingrid
A mio avviso è un suggerimento errato.
String
(lunghezza variabile) 10 byte + lunghezza stringa Da 0 a circa 2
miliardi
Da cui si evince che non è possibile avere una limitazione a
255...!!!!
Il Variant si usa quando non sai a priori il tipo di dato oltretutto
mi pare chiaro che sarebbe
Variant
(con caratteri) 22 byte + lunghezza stringa Stesso intervallo di
String a lunghezza variabile
La dichiarazione di tipo STRINGA è quello che serve e devi usare
quello.
Ritengo che tu stia sbagliando la composizione della dicitura SQL
tentando di concatenare
in modo erato la stringa....!
Ti consiglio di pensarci meglio o di evidenziarci il modo in cui stai
tentando di rendere
operativa la sintassi....!
@Alex
Confermo, mi sono fattp portar via dalla sua eccezione.
Io pensavo al campo non alla stringa
Anche io faccio lunghe stringhe di query per i rst e per le query action
e non ho mai avuto problemi di lunghezza (al limite ogni tanto problemi di
ritorni a capo)
--
--
Massimiliano Amendola
www.accessgroup.it
Il sito italiano di svilupatori Access
www.donkarl.com/it/cisa
Marco Pizzamiglio
2006-10-16 11:32:54 UTC
Permalink
Post by Alessandro Baraldi
Post by ingrid
Massimiliano mi ha mandato una mail suggerendomi di utilizzare il tipo di
dato Variant e ora funziona.
Grazie mille per la Vostra disponibilità
Ciao
Ingrid
A mio avviso è un suggerimento errato.
String
(lunghezza variabile) 10 byte + lunghezza stringa Da 0 a circa 2
miliardi
Da cui si evince che non è possibile avere una limitazione a
255...!!!!
@Alex
Chiaro, e facilmente dimostrabile caricando più di 255 caratteri in una
variabile String, per esempio 5.000:
Dim Str As String
Str = String$(5000,"X")
Debug.Print Len(Str), Str

Il problema deve essere dovuto ad altre cause. Magari se posta il codice
si riesce a capire la causa dell'errore.
Ciao.
-Marco-
--
namor at inwind punto it

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Alessandro Baraldi
2006-10-16 11:38:39 UTC
Permalink
Marco Pizzamiglio ha scritto:

[CUT]
Post by Marco Pizzamiglio
Chiaro, e facilmente dimostrabile caricando più di 255 caratteri in una
Dim Str As String
Str = String$(5000,"X")
Debug.Print Len(Str), Str
Il problema deve essere dovuto ad altre cause. Magari se posta il codice
si riesce a capire la causa dell'errore.
Ciao.
-Marco-
Ciao Marco
Fai attenzione che le Stringhe a lunghezza fissa hanno un limite molto
inferiore...!

String
(lunghezza fissa) Lunghezza stringa Da 1 a circa 65.400

String
(lunghezza variabile) 10 byte + lunghezza stringa Da 0 a circa 2
miliardi

Detto questo a mio avviso è il CR solamente a creare dei problemi.

@Alex
Marco Pizzamiglio
2006-10-16 13:15:34 UTC
Permalink
Post by Alessandro Baraldi
[CUT]
Post by Marco Pizzamiglio
Chiaro, e facilmente dimostrabile caricando più di 255 caratteri in una
Dim Str As String
Str = String$(5000,"X")
Debug.Print Len(Str), Str
Il problema deve essere dovuto ad altre cause. Magari se posta il codice
si riesce a capire la causa dell'errore.
Ciao.
-Marco-
Ciao Marco
Fai attenzione che le Stringhe a lunghezza fissa hanno un limite molto
inferiore...!
String
(lunghezza fissa) Lunghezza stringa Da 1 a circa 65.400
String
(lunghezza variabile) 10 byte + lunghezza stringa Da 0 a circa 2
miliardi
Detto questo a mio avviso è il CR solamente a creare dei problemi.
@Alex
Questa
Dim Str As String
è a lunghezza variabile, quindi con limite 2 miliardi e rotti.

Mentre questa
Dim Str As String * 5000
è a lunghezza fissa, con limite 65.535 caratteri.

Solitamente tutti usano la prima sintassi, strano che dia errore già oltre
i 255.

Il CR è un carattere come un altro e occupa 1 solo posto nella stringa, a
differenza del CRLF che ne occupa 2. Non credo che siano quelli a creare
problemi, dev'essere qualcos'altro.
Basta interrompere il codice prima dell'esecuzione della query e
controllare l'SQL generato, per vedere se è corretto o no.

Il caso più comune in cui compare l'errore di superamento dei limiti di
lunghezza delle stringhe è quando non si chiudono bene i doppi apici, nel
qual caso considera tutto il codice seguente come facente parte della
stringa.
Bisognerebbe accertare se dà errore in fase di assegnazione dell'SQL alla
variabile stringa o in fase di esecuzione della query.
-Marco-
--
namor at inwind punto it

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Alessandro Baraldi
2006-10-16 14:31:01 UTC
Permalink
Marco Pizzamiglio ha scritto:

[CUT]
Post by Marco Pizzamiglio
Questa
Dim Str As String
è a lunghezza variabile, quindi con limite 2 miliardi e rotti.
Mentre questa
Dim Str As String * 5000
è a lunghezza fissa, con limite 65.535 caratteri.
Solitamente tutti usano la prima sintassi, strano che dia errore già oltre
i 255.
Il CR è un carattere come un altro e occupa 1 solo posto nella stringa, a
differenza del CRLF che ne occupa 2. Non credo che siano quelli a creare
problemi, dev'essere qualcos'altro.
Basta interrompere il codice prima dell'esecuzione della query e
controllare l'SQL generato, per vedere se è corretto o no.
Il caso più comune in cui compare l'errore di superamento dei limiti di
lunghezza delle stringhe è quando non si chiudono bene i doppi apici, nel
qual caso considera tutto il codice seguente come facente parte della
stringa.
Bisognerebbe accertare se dà errore in fase di assegnazione dell'SQL alla
variabile stringa o in fase di esecuzione della query.
-Marco-
Non è proprio così semplice, nel senso che in entrambi i casi,
potresti ottenere errore se
l'assegnazione della variabile avviene in modo errato:

Questo è il modo LIMITATO o errato(da quanto io ho potuto
riscontrare):

sSQL="SELECT * FROM T1 " & _
"BLA....BLA.....BLA...." & _
"BLA....BLA....."

Questo è il modo che non dà problemi(sempre in base alla mia
esperienza):

sSQL="SELECT * FROM T1 "
sSQL=sSQL+"BLA....BLA.....BLA...."
sSQL=sSQL+"BLA....BLA.....BLA...."

Ciao
@Alex
Marco Pizzamiglio
2006-10-16 15:30:56 UTC
Permalink
Post by Alessandro Baraldi
[CUT]
Post by Marco Pizzamiglio
Il caso più comune in cui compare l'errore di superamento dei limiti di
lunghezza delle stringhe è quando non si chiudono bene i doppi apici, nel
qual caso considera tutto il codice seguente come facente parte della
stringa.
Cazzata. Mi sono confuso con altri linguaggi, vedi HTML, PHP, ecc...
Se dimentichi gli apici in VBA dà subito errore di sintassi.
Post by Alessandro Baraldi
Non è proprio così semplice, nel senso che in entrambi i casi,
potresti ottenere errore se
Questo è il modo LIMITATO o errato(da quanto io ho potuto
sSQL="SELECT * FROM T1 " & _
"BLA....BLA.....BLA...." & _
"BLA....BLA....."
Questo è il modo che non dà problemi(sempre in base alla mia
sSQL="SELECT * FROM T1 "
sSQL=sSQL+"BLA....BLA.....BLA...."
sSQL=sSQL+"BLA....BLA.....BLA...."
Ciao
@Alex
Se l'hai provato è sicuramente così. Strano che nell'help non sia citato
questo limite.
Ma che fine ha fatto ingrid? Se ci posta il codice che ha usato ci si può
fare un'idea più precisa del problema.
Ciao.
-Marco-
--
namor at inwind punto it

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Alessandro Baraldi
2006-10-16 16:20:13 UTC
Permalink
Marco Pizzamiglio ha scritto:

[CUT]
Post by Marco Pizzamiglio
Se l'hai provato è sicuramente così. Strano che nell'help non sia citato
questo limite.
Non capisco che tipo di limite sia, ma l'ho constatato scrivendo
malamente
delle stringhe SQL in vba...... e non capendo cosa succedeva ho fatto
un pò di prove
passando per una TextBox, nella quale scrivevo il predicato SQL.... che
poi passavo alla stringa ...e li andava....
Post by Marco Pizzamiglio
Ma che fine ha fatto ingrid? Se ci posta il codice che ha usato ci si può
fare un'idea più precisa del problema.
Ho sentito dire che è un'uomo....!
;-)
Post by Marco Pizzamiglio
Ciao.
-Marco-
@Alex
Alessandro Cara
2006-10-16 16:30:43 UTC
Permalink
Alessandro Baraldi wrote:
[cut]
Post by Alessandro Baraldi
Ho sentito dire che è un'uomo....!
;-)
La cosa potrebbe farsi intrigante ;<)
--
ac
Alessandro Baraldi
2006-10-16 16:42:51 UTC
Permalink
Post by Alessandro Cara
[cut]
Post by Alessandro Baraldi
Ho sentito dire che è un'uomo....!
;-)
La cosa potrebbe farsi intrigante ;<)
--
ac
Io passo....

@Alex
ingrid
2006-10-17 06:39:03 UTC
Permalink
Post by Alessandro Cara
[cut]
Post by Alessandro Baraldi
Ho sentito dire che è un'uomo....!
;-)
La cosa potrebbe farsi intrigante ;<)
--
ac
Io passo....

@Alex

Precisiamo non sono un uomo...ad ogni modo grazie mille per i vari
suggerimenti, ma sinceramente il mio problema persiste, quindi vi posto il
codice che magari trovate subito l'errore:

Private Sub Comando56_Click()
Dim stringa As Variant
stringa = "select Anagrafica_Convenzioni.Cod_Convenzione,
Anagrafica_Convenzioni.Descrizione_Convenzione from Anagrafica_Convenzioni,
Rate where Anagrafica_Convenzioni.Id_Convenzione = Rate.Id_Convenzione and "
stringa = stringa + "Rate.Data_Scadenza <#09/01/2006#"
stringa = stringa + " GROUP BY Anagrafica_Convenzioni.Cod_Convenzione,
Anagrafica_Convenzioni.Descrizione_Convenzione"
Me.Convenzioni_SOTTOMASCHERA.Form.RecordSource = stringa

Grazie mille ancora a tutti per la vostra disponibilità!!!
eSQueL
2006-10-17 07:59:51 UTC
Permalink
Post by ingrid
Precisiamo non sono un uomo...ad ogni modo grazie mille per i vari
suggerimenti, ma sinceramente il mio problema persiste, quindi vi posto il
Private Sub Comando56_Click()
Dim stringa As Variant
stringa = "select Anagrafica_Convenzioni.Cod_Convenzione,
Anagrafica_Convenzioni.Descrizione_Convenzione from
Anagrafica_Convenzioni, Rate where Anagrafica_Convenzioni.Id_Convenzione =
Rate.Id_Convenzione and "
stringa = stringa + "Rate.Data_Scadenza <#09/01/2006#"
stringa = stringa + " GROUP BY Anagrafica_Convenzioni.Cod_Convenzione,
Anagrafica_Convenzioni.Descrizione_Convenzione"
Me.Convenzioni_SOTTOMASCHERA.Form.RecordSource = stringa
Grazie mille ancora a tutti per la vostra disponibilità!!!
Al di là di altri aspetti, se hai scritto

stringa = "select Anagrafica_Convenzioni.Cod_Convenzione,
Anagrafica_Convenzioni.Descrizione_Convenzione from Anagrafica_Convenzioni,
....

è sbagliato perché ogni ritorno a capo va marcato con [" & _] e la nuova
riga dev'essere aperta dai doppi apici, sino alla riga finale (chiusa dagli
apici).

Ossia

stringa = "select Anagrafica_Convenzioni.Cod_Convenzione, " & _
"Anagrafica_Convenzioni.Descrizione_Convenzione " & _
"from Anagrafica_Convenzioni, ...."

Inoltre, non sono proprio sicuro che "Rate" possa star lì prima della
clausola WHERE

Ciao

eSQueL
Alessandro Baraldi
2006-10-17 08:05:12 UTC
Permalink
Post by Alessandro Baraldi
Post by Alessandro Cara
[cut]
Post by Alessandro Baraldi
Ho sentito dire che è un'uomo....!
;-)
La cosa potrebbe farsi intrigante ;<)
--
ac
Io passo....
@Alex
Precisiamo non sono un uomo...ad ogni modo grazie mille per i vari
suggerimenti, ma sinceramente il mio problema persiste, quindi vi posto il
Private Sub Comando56_Click()
Dim stringa As Variant
stringa = "select Anagrafica_Convenzioni.Cod_Convenzione,
Anagrafica_Convenzioni.Descrizione_Convenzione from Anagrafica_Convenzioni,
Rate where Anagrafica_Convenzioni.Id_Convenzione = Rate.Id_Convenzione and "
stringa = stringa + "Rate.Data_Scadenza <#09/01/2006#"
stringa = stringa + " GROUP BY Anagrafica_Convenzioni.Cod_Convenzione,
Anagrafica_Convenzioni.Descrizione_Convenzione"
Me.Convenzioni_SOTTOMASCHERA.Form.RecordSource = stringa
Grazie mille ancora a tutti per la vostra disponibilità!!!
Leggendo la SQL mi pare che ci sia un errore ..... appaiono 2 Tabelle,
ma nessun JOIN
Anagrafica_Convenzioni e Rate.....
Secondo me non ha un gran senso di funzionamento....!!!

Hai provato a scrivere la Query direttamente in QBE e verificare che
funzioni... in modo corretto...?

@Alex

Alessandro Cara
2006-10-16 11:35:55 UTC
Permalink
Post by Alessandro Baraldi
Post by ingrid
Post by eSQueL
Post by eSQueL
Post by ingrid
Il tipo di dato MEMO mi basterebbe eccome, solo che se lo dichiaro come
tipo dato in VBA mi da
errore di compilazione per: Tipo definito dall'utente non definito, io l'ho
Dim stringa As Memo
Grazie ancora!
Ingrid
Non è che non torni mai a capo? .... " & _ ... eccetera? :)
Ciao eSQueL
Mi spiego meglio. Prova a dividere la stringa con la sequenza [" & _] in
rst.Open "SELECT BANDA_BASSOTTI.* " & _
"FROM BANDA_BASSOTTI " & _
"WHERE (BANDA_BASSOTTI.ID)=6111;", ....
Ciao.
eSQueL
Massimiliano mi ha mandato una mail suggerendomi di utilizzare il tipo di
dato Variant e ora funziona.
Grazie mille per la Vostra disponibilità
Ciao
Ingrid
A mio avviso è un suggerimento errato.
String
(lunghezza variabile) 10 byte + lunghezza stringa Da 0 a circa 2
miliardi
Mi ricordo vagamente mi e' successo ed era sotto VB in connessione ADO
con trasferimento dei valori via XML.
Avevo trovato in giro sulla rete anche il riscontro della situazione.

Non era tanto un problema di lunghezza stringa ma un problema legato
alla lunghezza "eseguibile" dell'SQL. Fatto sta, al tempo, sono stato
costretto a modificare la logica di esecuzione dell'SQL. E forse il
limite era proprio 255 caratteri.

In tutto cio' quello che non mi torna e' il fatto che con un Variant
Ingrid dice che va bene.
--
ac
eSQueL
2006-10-16 11:58:19 UTC
Permalink
Post by Alessandro Baraldi
Post by ingrid
Post by eSQueL
Post by eSQueL
Post by ingrid
Il tipo di dato MEMO mi basterebbe eccome, solo che se lo dichiaro come
tipo dato in VBA mi da
errore di compilazione per: Tipo definito dall'utente non definito, io l'ho
Dim stringa As Memo
Grazie ancora!
Ingrid
Non è che non torni mai a capo? .... " & _ ... eccetera? :)
Ciao eSQueL
Mi spiego meglio. Prova a dividere la stringa con la sequenza [" & _] in
rst.Open "SELECT BANDA_BASSOTTI.* " & _
"FROM BANDA_BASSOTTI " & _
"WHERE (BANDA_BASSOTTI.ID)=6111;", ....
Ciao.
eSQueL
Massimiliano mi ha mandato una mail suggerendomi di utilizzare il tipo di
dato Variant e ora funziona.
Grazie mille per la Vostra disponibilità
Ciao
Ingrid
A mio avviso è un suggerimento errato.
String
(lunghezza variabile) 10 byte + lunghezza stringa Da 0 a circa 2
miliardi
Mi ricordo vagamente mi e' successo ed era sotto VB in connessione ADO con
trasferimento dei valori via XML.
Avevo trovato in giro sulla rete anche il riscontro della situazione.
Non era tanto un problema di lunghezza stringa ma un problema legato alla
lunghezza "eseguibile" dell'SQL. Fatto sta, al tempo, sono stato
costretto a modificare la logica di esecuzione dell'SQL. E forse il limite
era proprio 255 caratteri.
In tutto cio' quello che non mi torna e' il fatto che con un Variant
Ingrid dice che va bene.
--
ac
Ho provato una select lunga oltre 300 caratteri (ADO). Nessun problema.

eSQueL
Alessandro Baraldi
2006-10-16 12:34:53 UTC
Permalink
Alessandro Cara ha scritto:

[CUT]
Post by Alessandro Cara
Mi ricordo vagamente mi e' successo ed era sotto VB in connessione ADO
con trasferimento dei valori via XML.
Avevo trovato in giro sulla rete anche il riscontro della situazione.
Non era tanto un problema di lunghezza stringa ma un problema legato
alla lunghezza "eseguibile" dell'SQL. Fatto sta, al tempo, sono stato
costretto a modificare la logica di esecuzione dell'SQL. E forse il
limite era proprio 255 caratteri.
In tutto cio' quello che non mi torna e' il fatto che con un Variant
Ingrid dice che va bene.
--
ac
Credo che ti ricordi molto, ma molto... vagamente......

Nessun problema a 255 caratteri nè con SQL nè sulle stringhe, il
problema è solo per la concatenazione, se scrivi:

sSQL="SELECT * FROM T1 " & _
"WHERE....." & _
allora troverai un problema, che verrà segnalato come massima
lunghezza ammissibile...

Se invece scrivi:

sSQL="SELECT * FROM T1 "
sSQL=sSQL+"WHERE...."
non avrai nessun problema.

@Alex
eSQueL
2006-10-16 12:48:22 UTC
Permalink
Scusa Alex,

questo è parte del primo post di Ingrdi:

*Devo fare un SQl all'interno di VBA ma la
lunghezza massima delle stringhe è di 255, per cui avendo una streinga SQL
più lunga non mi permette di eseguirla in modo corretto me la tronca.*


Che vuol dire "me la tronca". Magari mi sbalgio, ma non ho mai visto il
compilatore troncare qualcosa.


Ciao

eSQuel
Alessandro Baraldi
2006-10-16 13:23:55 UTC
Permalink
Post by eSQueL
Scusa Alex,
*Devo fare un SQl all'interno di VBA ma la
lunghezza massima delle stringhe è di 255, per cui avendo una streinga SQL
più lunga non mi permette di eseguirla in modo corretto me la tronca.*
Che vuol dire "me la tronca". Magari mi sbalgio, ma non ho mai visto il
compilatore troncare qualcosa.
Ciao
eSQuel
Nemmeno io, ma personalmente non mi perdo nella diagnosi di chi non ha
le idee chiare, cerco di capirne la logica in base alla segnalazione e
di capire !

Se leggi il mio Post ho esposto quanto in mia conoscenza per risolvere
il problema della
composizione stringa SQL.
A valle delle prove che l'OP farà vediamo se ho frainteso...!

@Alex
Alessandro Cara
2006-10-16 14:11:48 UTC
Permalink
Post by Alessandro Baraldi
[CUT]
Post by Alessandro Cara
Mi ricordo vagamente mi e' successo ed era sotto VB in connessione ADO
con trasferimento dei valori via XML.
Avevo trovato in giro sulla rete anche il riscontro della situazione.
Non era tanto un problema di lunghezza stringa ma un problema legato
alla lunghezza "eseguibile" dell'SQL. Fatto sta, al tempo, sono stato
costretto a modificare la logica di esecuzione dell'SQL. E forse il
limite era proprio 255 caratteri.
In tutto cio' quello che non mi torna e' il fatto che con un Variant
Ingrid dice che va bene.
--
ac
Credo che ti ricordi molto, ma molto... vagamente......
Nessun problema a 255 caratteri nè con SQL nè sulle stringhe, il
sSQL="SELECT * FROM T1 " & _
"WHERE....." & _
allora troverai un problema, che verrà segnalato come massima
lunghezza ammissibile...
sSQL="SELECT * FROM T1 "
sSQL=sSQL+"WHERE...."
non avrai nessun problema.
Il problema me lo ricordavo. Non ricordavo la soluzione. Nel frattempo
mi sono andato a riguardare quel codice e non ho trovato alcuna
stranezza ergo la cosa che scrivi dovrebbe essere certa al 101%.

--
ac
Continua a leggere su narkive:
Loading...