Discussion:
Crear una función pública de tipo 'Memo
(demasiado antiguo para responder)
Toni Miralles
2017-05-16 07:24:23 UTC
Permalink
Buenos días,

Tengo una función cómo la que sigue:


'Public Function sMem(iIdExp As Integer) As String'


En la que encadeno varias lineas de texto.

El problema és que esta cadena de tipo 'String sólo encadena los 255 primeros caràcteres, pero no se cómo definir la función cómo tipo Memo o Texto Largo.

Gracias.
Emilio
2017-05-16 16:56:44 UTC
Permalink
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
es poco probable que puedas sobrecargar una variable string, así que es muy
posible que el problema esté en el contenido de la función, pero como no nos
la enseñas, mal podremos saberlo.

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio

"Toni Miralles" escribió en el mensaje de
noticias:e5adad9a-0536-44f3-b90e-***@googlegroups.com...

Buenos días,

Tengo una función cómo la que sigue:


'Public Function sMem(iIdExp As Integer) As String'


En la que encadeno varias lineas de texto.

El problema és que esta cadena de tipo 'String sólo encadena los 255
primeros caràcteres, pero no se cómo definir la función cómo tipo Memo o
Texto Largo.

Gracias.
Toni Miralles
2017-05-17 07:17:46 UTC
Permalink
Buenos días,

Gràcias por a rápida respuesta. Aquí te dejo la función entera, se trata de un Recordset que encadena varios campos de una tabla:

Public Function sMemo(iIdExp As Integer) As String

Dim sSQL As String
Dim rst1 As Recordset

sSQL = "SELECT Historic.IdExpHist, Historic.DataHist, Historic.DescrHist, Historic.ObsHist FROM Historic WHERE (((Historic.IdExpHist)= " & iIdExp & "))"

Set rst1 = CurrentDb.OpenRecordset(sSQL)

If rst1.RecordCount = 0 Then
rst1.Close
Set rst1 = Nothing
Exit Function
End If

rst1.MoveLast

If rst1.RecordCount = 0 Then
sMemo = ""
Exit Function
End If

rst1.MoveLast
rst1.MoveFirst

rst1.Sort = rst1.Fields(2)

Do While Not rst1.EOF

If sMemo = "" Then
Else
sMemo = sMemo & " "
End If

sMemo = sMemo & "#" & rst1.Fields(1) & "# -" & rst1.Fields(2) & ". " & rst1.Fields(3) & "-"

rst1.MoveNext

Loop

rst1.Close
Set rst1 = Nothing

End Function
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
es poco probable que puedas sobrecargar una variable string, así que es muy
posible que el problema esté en el contenido de la función, pero como no nos
la enseñas, mal podremos saberlo.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
'Public Function sMem(iIdExp As Integer) As String'
En la que encadeno varias lineas de texto.
El problema és que esta cadena de tipo 'String sólo encadena los 255
primeros caràcteres, pero no se cómo definir la función cómo tipo Memo o
Texto Largo.
Gracias.
Emilio
2017-05-17 17:05:24 UTC
Permalink
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
pues a simple vista no veo nada anormal, ¿de que manera verificas que solo
alcanza los 255 caracteres, yo he metido enormes ficheros en una variable
string sin ningún problema,si que es cierto que si esa variable la asignas a
un campo de texto que tenga formato solo mostrará 255 caracteres.
Ejecuta paso a paso y revisa en que momento y porque casca.

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio

"Toni Miralles" escribió en el mensaje de
noticias:a8482542-f32c-4889-91db-***@googlegroups.com...

Buenos días,

Gràcias por a rápida respuesta. Aquí te dejo la función entera, se trata de
un Recordset que encadena varios campos de una tabla:

Public Function sMemo(iIdExp As Integer) As String

Dim sSQL As String
Dim rst1 As Recordset

sSQL = "SELECT Historic.IdExpHist, Historic.DataHist,
Historic.DescrHist, Historic.ObsHist FROM Historic WHERE
(((Historic.IdExpHist)= " & iIdExp & "))"

Set rst1 = CurrentDb.OpenRecordset(sSQL)

If rst1.RecordCount = 0 Then
rst1.Close
Set rst1 = Nothing
Exit Function
End If

rst1.MoveLast

If rst1.RecordCount = 0 Then
sMemo = ""
Exit Function
End If

rst1.MoveLast
rst1.MoveFirst

rst1.Sort = rst1.Fields(2)

Do While Not rst1.EOF

If sMemo = "" Then
Else
sMemo = sMemo & " "
End If

sMemo = sMemo & "#" & rst1.Fields(1) & "# -" & rst1.Fields(2) & ". "
& rst1.Fields(3) & "-"

rst1.MoveNext

Loop

rst1.Close
Set rst1 = Nothing

End Function
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
es poco probable que puedas sobrecargar una variable string, así que es muy
posible que el problema esté en el contenido de la función, pero como no nos
la enseñas, mal podremos saberlo.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
'Public Function sMem(iIdExp As Integer) As String'
En la que encadeno varias lineas de texto.
El problema és que esta cadena de tipo 'String sólo encadena los 255
primeros caràcteres, pero no se cómo definir la función cómo tipo Memo o
Texto Largo.
Gracias.
Toni Miralles
2017-05-18 12:46:40 UTC
Permalink
Gracias, Emilio.

Cómo debo hacer para asignar a la variable un campo de texto sin formato? Ahora mismo el campo lo tengo definido en una consulta como sigue:

sMemo([C00_Expedients_Vigents].[IDExp]) AS Observaciones

Como puedo modificar este campo para que devuelva cadenes de más de 255 caracteres?

Gracias
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
pues a simple vista no veo nada anormal, ¿de que manera verificas que solo
alcanza los 255 caracteres, yo he metido enormes ficheros en una variable
string sin ningún problema,si que es cierto que si esa variable la asignas a
un campo de texto que tenga formato solo mostrará 255 caracteres.
Ejecuta paso a paso y revisa en que momento y porque casca.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
Gràcias por a rápida respuesta. Aquí te dejo la función entera, se trata de
Public Function sMemo(iIdExp As Integer) As String
Dim sSQL As String
Dim rst1 As Recordset
sSQL = "SELECT Historic.IdExpHist, Historic.DataHist,
Historic.DescrHist, Historic.ObsHist FROM Historic WHERE
(((Historic.IdExpHist)= " & iIdExp & "))"
Set rst1 = CurrentDb.OpenRecordset(sSQL)
If rst1.RecordCount = 0 Then
rst1.Close
Set rst1 = Nothing
Exit Function
End If
rst1.MoveLast
If rst1.RecordCount = 0 Then
sMemo = ""
Exit Function
End If
rst1.MoveLast
rst1.MoveFirst
rst1.Sort = rst1.Fields(2)
Do While Not rst1.EOF
If sMemo = "" Then
Else
sMemo = sMemo & " "
End If
sMemo = sMemo & "#" & rst1.Fields(1) & "# -" & rst1.Fields(2) & ". "
& rst1.Fields(3) & "-"
rst1.MoveNext
Loop
rst1.Close
Set rst1 = Nothing
End Function
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
es poco probable que puedas sobrecargar una variable string, así que es muy
posible que el problema esté en el contenido de la función, pero como no nos
la enseñas, mal podremos saberlo.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
'Public Function sMem(iIdExp As Integer) As String'
En la que encadeno varias lineas de texto.
El problema és que esta cadena de tipo 'String sólo encadena los 255
primeros caràcteres, pero no se cómo definir la función cómo tipo Memo o
Texto Largo.
Gracias.
Emilio
2017-05-18 16:59:49 UTC
Permalink
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!

Perdón, donde dije campo de texto debería haber dicho cuadro de texto, por
supuesto de un formulario.
Reitero lo dicho ¿has analizado el proceso paso a paso?

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
noticias:60cad7e9-06ed-400b-af4d-***@googlegroups.com...

Gracias, Emilio.

Cómo debo hacer para asignar a la variable un campo de texto sin formato?
Ahora mismo el campo lo tengo definido en una consulta como sigue:

sMemo([C00_Expedients_Vigents].[IDExp]) AS Observaciones

Como puedo modificar este campo para que devuelva cadenes de más de 255
caracteres?

Gracias
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
pues a simple vista no veo nada anormal, ¿de que manera verificas que solo
alcanza los 255 caracteres, yo he metido enormes ficheros en una variable
string sin ningún problema,si que es cierto que si esa variable la asignas a
un campo de texto que tenga formato solo mostrará 255 caracteres.
Ejecuta paso a paso y revisa en que momento y porque casca.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
Gràcias por a rápida respuesta. Aquí te dejo la función entera, se trata de
Public Function sMemo(iIdExp As Integer) As String
Dim sSQL As String
Dim rst1 As Recordset
sSQL = "SELECT Historic.IdExpHist, Historic.DataHist,
Historic.DescrHist, Historic.ObsHist FROM Historic WHERE
(((Historic.IdExpHist)= " & iIdExp & "))"
Set rst1 = CurrentDb.OpenRecordset(sSQL)
If rst1.RecordCount = 0 Then
rst1.Close
Set rst1 = Nothing
Exit Function
End If
rst1.MoveLast
If rst1.RecordCount = 0 Then
sMemo = ""
Exit Function
End If
rst1.MoveLast
rst1.MoveFirst
rst1.Sort = rst1.Fields(2)
Do While Not rst1.EOF
If sMemo = "" Then
Else
sMemo = sMemo & " "
End If
sMemo = sMemo & "#" & rst1.Fields(1) & "# -" & rst1.Fields(2) & ". "
& rst1.Fields(3) & "-"
rst1.MoveNext
Loop
rst1.Close
Set rst1 = Nothing
End Function
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
es poco probable que puedas sobrecargar una variable string, así que es muy
posible que el problema esté en el contenido de la función, pero como no nos
la enseñas, mal podremos saberlo.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
'Public Function sMem(iIdExp As Integer) As String'
En la que encadeno varias lineas de texto.
El problema és que esta cadena de tipo 'String sólo encadena los 255
primeros caràcteres, pero no se cómo definir la función cómo tipo Memo o
Texto Largo.
Gracias.
Toni Miralles
2017-05-19 07:55:17 UTC
Permalink
Buenos días,

En el proceso no interviene ningún formulario. Se trata más bién de una consulta que devuelve unos datos con los que luego opero (exporto a Excel, por ejemplo). Entonces, me ocurre que en la ejecución de la consulta me encuentro el campo ya restringido a 255 campos.

Te pongo la consulta SQL completa:

SELECT DISTINCT C00_Expedients_Vigents.IDLocComTP, C00_Expedients_Vigents.IDExp, C00_Expedients_Vigents.IdExplExp, sMemo([C00_Expedients_Vigents].[IDExp]) AS Observacions, C00_Expedients_Vigents.ObsExp, C00_Expedients_Vigents.EstatExp, C00_Expedients_Vigents.AforExp
FROM C00_LocCom_Vigents INNER JOIN (TPLocCom_Exp INNER JOIN C00_Expedients_Vigents ON TPLocCom_Exp.IDExpTP = C00_Expedients_Vigents.IDExp) ON C00_LocCom_Vigents.IDLocCom = C00_Expedients_Vigents.IDLocComTP
WHERE (((TPLocCom_Exp.CodiTP)=3));

Gracias de nuevo
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
Perdón, donde dije campo de texto debería haber dicho cuadro de texto, por
supuesto de un formulario.
Reitero lo dicho ¿has analizado el proceso paso a paso?
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Gracias, Emilio.
Cómo debo hacer para asignar a la variable un campo de texto sin formato?
sMemo([C00_Expedients_Vigents].[IDExp]) AS Observaciones
Como puedo modificar este campo para que devuelva cadenes de más de 255 caracteres?
Gracias
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
pues a simple vista no veo nada anormal, ¿de que manera verificas que solo
alcanza los 255 caracteres, yo he metido enormes ficheros en una variable
string sin ningún problema,si que es cierto que si esa variable la asignas a
un campo de texto que tenga formato solo mostrará 255 caracteres.
Ejecuta paso a paso y revisa en que momento y porque casca.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
Gràcias por a rápida respuesta. Aquí te dejo la función entera, se trata de
Public Function sMemo(iIdExp As Integer) As String
Dim sSQL As String
Dim rst1 As Recordset
sSQL = "SELECT Historic.IdExpHist, Historic.DataHist,
Historic.DescrHist, Historic.ObsHist FROM Historic WHERE
(((Historic.IdExpHist)= " & iIdExp & "))"
Set rst1 = CurrentDb.OpenRecordset(sSQL)
If rst1.RecordCount = 0 Then
rst1.Close
Set rst1 = Nothing
Exit Function
End If
rst1.MoveLast
If rst1.RecordCount = 0 Then
sMemo = ""
Exit Function
End If
rst1.MoveLast
rst1.MoveFirst
rst1.Sort = rst1.Fields(2)
Do While Not rst1.EOF
If sMemo = "" Then
Else
sMemo = sMemo & " "
End If
sMemo = sMemo & "#" & rst1.Fields(1) & "# -" & rst1.Fields(2) & ". "
& rst1.Fields(3) & "-"
rst1.MoveNext
Loop
rst1.Close
Set rst1 = Nothing
End Function
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
es poco probable que puedas sobrecargar una variable string, así que es muy
posible que el problema esté en el contenido de la función, pero como no nos
la enseñas, mal podremos saberlo.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
'Public Function sMem(iIdExp As Integer) As String'
En la que encadeno varias lineas de texto.
El problema és que esta cadena de tipo 'String sólo encadena los 255
primeros caràcteres, pero no se cómo definir la función cómo tipo Memo o
Texto Largo.
Gracias.
Emilio
2017-05-19 13:02:17 UTC
Permalink
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
Ese campo que concatenas, ¿no será memo?, porque los campos memo en las
consultas se capan a 255 caracteres.

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
noticias:df62e21a-b865-4692-8dc6-***@googlegroups.com...

Buenos días,

En el proceso no interviene ningún formulario. Se trata más bién de una
consulta que devuelve unos datos con los que luego opero (exporto a Excel,
por ejemplo). Entonces, me ocurre que en la ejecución de la consulta me
encuentro el campo ya restringido a 255 campos.

Te pongo la consulta SQL completa:

SELECT DISTINCT C00_Expedients_Vigents.IDLocComTP,
C00_Expedients_Vigents.IDExp, C00_Expedients_Vigents.IdExplExp,
sMemo([C00_Expedients_Vigents].[IDExp]) AS Observacions,
C00_Expedients_Vigents.ObsExp, C00_Expedients_Vigents.EstatExp,
C00_Expedients_Vigents.AforExp
FROM C00_LocCom_Vigents INNER JOIN (TPLocCom_Exp INNER JOIN
C00_Expedients_Vigents ON TPLocCom_Exp.IDExpTP =
C00_Expedients_Vigents.IDExp) ON C00_LocCom_Vigents.IDLocCom =
C00_Expedients_Vigents.IDLocComTP
WHERE (((TPLocCom_Exp.CodiTP)=3));

Gracias de nuevo
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
Perdón, donde dije campo de texto debería haber dicho cuadro de texto, por
supuesto de un formulario.
Reitero lo dicho ¿has analizado el proceso paso a paso?
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Gracias, Emilio.
Cómo debo hacer para asignar a la variable un campo de texto sin formato?
sMemo([C00_Expedients_Vigents].[IDExp]) AS Observaciones
Como puedo modificar este campo para que devuelva cadenes de más de 255 caracteres?
Gracias
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
pues a simple vista no veo nada anormal, ¿de que manera verificas que solo
alcanza los 255 caracteres, yo he metido enormes ficheros en una variable
string sin ningún problema,si que es cierto que si esa variable la
asignas
a
un campo de texto que tenga formato solo mostrará 255 caracteres.
Ejecuta paso a paso y revisa en que momento y porque casca.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
Gràcias por a rápida respuesta. Aquí te dejo la función entera, se trata de
Public Function sMemo(iIdExp As Integer) As String
Dim sSQL As String
Dim rst1 As Recordset
sSQL = "SELECT Historic.IdExpHist, Historic.DataHist,
Historic.DescrHist, Historic.ObsHist FROM Historic WHERE
(((Historic.IdExpHist)= " & iIdExp & "))"
Set rst1 = CurrentDb.OpenRecordset(sSQL)
If rst1.RecordCount = 0 Then
rst1.Close
Set rst1 = Nothing
Exit Function
End If
rst1.MoveLast
If rst1.RecordCount = 0 Then
sMemo = ""
Exit Function
End If
rst1.MoveLast
rst1.MoveFirst
rst1.Sort = rst1.Fields(2)
Do While Not rst1.EOF
If sMemo = "" Then
Else
sMemo = sMemo & " "
End If
sMemo = sMemo & "#" & rst1.Fields(1) & "# -" & rst1.Fields(2) &
".
"
& rst1.Fields(3) & "-"
rst1.MoveNext
Loop
rst1.Close
Set rst1 = Nothing
End Function
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
es poco probable que puedas sobrecargar una variable string, así que
es
muy
posible que el problema esté en el contenido de la función, pero como
no
nos
la enseñas, mal podremos saberlo.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
'Public Function sMem(iIdExp As Integer) As String'
En la que encadeno varias lineas de texto.
El problema és que esta cadena de tipo 'String sólo encadena los 255
primeros caràcteres, pero no se cómo definir la función cómo tipo Memo o
Texto Largo.
Gracias.
Toni Miralles
2017-05-22 05:40:14 UTC
Permalink
Buenos días.

La función devuelve la concatenación de varios campos a partir de un campo IdExp que és un indice:

sSQL = "SELECT Historic.IdExpHist, Historic.DataHist, Historic.DescrHist, Historic.ObsHist FROM Historic WHERE (((Historic.IdExpHist)= " & iIdExp & "))"

Però sí que es verdad que el campo [Historic].[ObsHist] es memo.

Entonces, que me recomiendas para poder concatenar estos campos sin perder ningún caràcter?

Muchas gracias de nuevo.
Toni
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
Ese campo que concatenas, ¿no será memo?, porque los campos memo en las
consultas se capan a 255 caracteres.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
En el proceso no interviene ningún formulario. Se trata más bién de una
consulta que devuelve unos datos con los que luego opero (exporto a Excel,
por ejemplo). Entonces, me ocurre que en la ejecución de la consulta me
encuentro el campo ya restringido a 255 campos.
SELECT DISTINCT C00_Expedients_Vigents.IDLocComTP,
C00_Expedients_Vigents.IDExp, C00_Expedients_Vigents.IdExplExp,
sMemo([C00_Expedients_Vigents].[IDExp]) AS Observacions,
C00_Expedients_Vigents.ObsExp, C00_Expedients_Vigents.EstatExp,
C00_Expedients_Vigents.AforExp
FROM C00_LocCom_Vigents INNER JOIN (TPLocCom_Exp INNER JOIN
C00_Expedients_Vigents ON TPLocCom_Exp.IDExpTP =
C00_Expedients_Vigents.IDExp) ON C00_LocCom_Vigents.IDLocCom =
C00_Expedients_Vigents.IDLocComTP
WHERE (((TPLocCom_Exp.CodiTP)=3));
Gracias de nuevo
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
Perdón, donde dije campo de texto debería haber dicho cuadro de texto, por
supuesto de un formulario.
Reitero lo dicho ¿has analizado el proceso paso a paso?
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Gracias, Emilio.
Cómo debo hacer para asignar a la variable un campo de texto sin formato?
sMemo([C00_Expedients_Vigents].[IDExp]) AS Observaciones
Como puedo modificar este campo para que devuelva cadenes de más de 255 caracteres?
Gracias
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
pues a simple vista no veo nada anormal, ¿de que manera verificas que solo
alcanza los 255 caracteres, yo he metido enormes ficheros en una variable
string sin ningún problema,si que es cierto que si esa variable la
asignas
a
un campo de texto que tenga formato solo mostrará 255 caracteres.
Ejecuta paso a paso y revisa en que momento y porque casca.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
Gràcias por a rápida respuesta. Aquí te dejo la función entera, se trata de
Public Function sMemo(iIdExp As Integer) As String
Dim sSQL As String
Dim rst1 As Recordset
sSQL = "SELECT Historic.IdExpHist, Historic.DataHist,
Historic.DescrHist, Historic.ObsHist FROM Historic WHERE
(((Historic.IdExpHist)= " & iIdExp & "))"
Set rst1 = CurrentDb.OpenRecordset(sSQL)
If rst1.RecordCount = 0 Then
rst1.Close
Set rst1 = Nothing
Exit Function
End If
rst1.MoveLast
If rst1.RecordCount = 0 Then
sMemo = ""
Exit Function
End If
rst1.MoveLast
rst1.MoveFirst
rst1.Sort = rst1.Fields(2)
Do While Not rst1.EOF
If sMemo = "" Then
Else
sMemo = sMemo & " "
End If
sMemo = sMemo & "#" & rst1.Fields(1) & "# -" & rst1.Fields(2) &
".
"
& rst1.Fields(3) & "-"
rst1.MoveNext
Loop
rst1.Close
Set rst1 = Nothing
End Function
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
es poco probable que puedas sobrecargar una variable string, así que
es
muy
posible que el problema esté en el contenido de la función, pero como
no
nos
la enseñas, mal podremos saberlo.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
'Public Function sMem(iIdExp As Integer) As String'
En la que encadeno varias lineas de texto.
El problema és que esta cadena de tipo 'String sólo encadena los 255
primeros caràcteres, pero no se cómo definir la función cómo tipo Memo o
Texto Largo.
Gracias.
Emilio
2017-05-22 19:01:55 UTC
Permalink
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
lo siento pero me temo que no se pueda hacer nada con eso, como te decía,
una consulta no devuelve mas de 255 caracteres de un campo memo.

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
noticias:19f925db-0312-49eb-a77f-***@googlegroups.com...

Buenos días.

La función devuelve la concatenación de varios campos a partir de un campo
IdExp que és un indice:

sSQL = "SELECT Historic.IdExpHist, Historic.DataHist, Historic.DescrHist,
Historic.ObsHist FROM Historic WHERE (((Historic.IdExpHist)= " & iIdExp &
"))"

Però sí que es verdad que el campo [Historic].[ObsHist] es memo.

Entonces, que me recomiendas para poder concatenar estos campos sin perder
ningún caràcter?

Muchas gracias de nuevo.
Toni
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
Ese campo que concatenas, ¿no será memo?, porque los campos memo en las
consultas se capan a 255 caracteres.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
En el proceso no interviene ningún formulario. Se trata más bién de una
consulta que devuelve unos datos con los que luego opero (exporto a Excel,
por ejemplo). Entonces, me ocurre que en la ejecución de la consulta me
encuentro el campo ya restringido a 255 campos.
SELECT DISTINCT C00_Expedients_Vigents.IDLocComTP,
C00_Expedients_Vigents.IDExp, C00_Expedients_Vigents.IdExplExp,
sMemo([C00_Expedients_Vigents].[IDExp]) AS Observacions,
C00_Expedients_Vigents.ObsExp, C00_Expedients_Vigents.EstatExp,
C00_Expedients_Vigents.AforExp
FROM C00_LocCom_Vigents INNER JOIN (TPLocCom_Exp INNER JOIN
C00_Expedients_Vigents ON TPLocCom_Exp.IDExpTP =
C00_Expedients_Vigents.IDExp) ON C00_LocCom_Vigents.IDLocCom =
C00_Expedients_Vigents.IDLocComTP
WHERE (((TPLocCom_Exp.CodiTP)=3));
Gracias de nuevo
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
Perdón, donde dije campo de texto debería haber dicho cuadro de texto, por
supuesto de un formulario.
Reitero lo dicho ¿has analizado el proceso paso a paso?
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Gracias, Emilio.
Cómo debo hacer para asignar a la variable un campo de texto sin formato?
sMemo([C00_Expedients_Vigents].[IDExp]) AS Observaciones
Como puedo modificar este campo para que devuelva cadenes de más de 255 caracteres?
Gracias
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
pues a simple vista no veo nada anormal, ¿de que manera verificas que solo
alcanza los 255 caracteres, yo he metido enormes ficheros en una variable
string sin ningún problema,si que es cierto que si esa variable la
asignas
a
un campo de texto que tenga formato solo mostrará 255 caracteres.
Ejecuta paso a paso y revisa en que momento y porque casca.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
Gràcias por a rápida respuesta. Aquí te dejo la función entera, se
trata
de
Public Function sMemo(iIdExp As Integer) As String
Dim sSQL As String
Dim rst1 As Recordset
sSQL = "SELECT Historic.IdExpHist, Historic.DataHist,
Historic.DescrHist, Historic.ObsHist FROM Historic WHERE
(((Historic.IdExpHist)= " & iIdExp & "))"
Set rst1 = CurrentDb.OpenRecordset(sSQL)
If rst1.RecordCount = 0 Then
rst1.Close
Set rst1 = Nothing
Exit Function
End If
rst1.MoveLast
If rst1.RecordCount = 0 Then
sMemo = ""
Exit Function
End If
rst1.MoveLast
rst1.MoveFirst
rst1.Sort = rst1.Fields(2)
Do While Not rst1.EOF
If sMemo = "" Then
Else
sMemo = sMemo & " "
End If
sMemo = sMemo & "#" & rst1.Fields(1) & "# -" & rst1.Fields(2) &
".
"
& rst1.Fields(3) & "-"
rst1.MoveNext
Loop
rst1.Close
Set rst1 = Nothing
End Function
Post by Emilio
-------------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-------------------------------------------------------------------------------
Hola!
es poco probable que puedas sobrecargar una variable string, así que
es
muy
posible que el problema esté en el contenido de la función, pero como
no
nos
la enseñas, mal podremos saberlo.
Saludos a todos desde Huelva
Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni Miralles" escribió en el mensaje de
Buenos días,
'Public Function sMem(iIdExp As Integer) As String'
En la que encadeno varias lineas de texto.
El problema és que esta cadena de tipo 'String sólo encadena los 255
primeros caràcteres, pero no se cómo definir la función cómo tipo
Memo
o
Texto Largo.
Gracias.
José Mª Fueyo
2017-05-23 07:03:45 UTC
Permalink
Hola
Mira a ver sí por aquí encuentras alguna ayuda:
http://allenbrowne.com/ser-63.html

Salu2,
José Mª Fueyo
Toni Miralles
2017-05-23 09:11:55 UTC
Permalink
Gracias, jose Ma, tendré que cambiar alguna cosa, però puede funcionar.

Muchas gracias a los dos.
Post by José Mª Fueyo
Hola
http://allenbrowne.com/ser-63.html
Salu2,
José Mª Fueyo
Loading...