• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 792
  • Last Modified:

Access Query Cutting off Memo Text

I have a Query that is organized by “Select Distinct Top 1”

Access is Ternicating (sp?) the records displayed in the Query and cutting the text off at 255 characters.

I created a Module with the following code—but it doesn’t seem to be working.

Am I missing something here?  Can anyone think of what I’m doing wrong?



Public Function LookupMemo( _
  ByVal strSource As String, _
  ByVal strFieldID As String, _
  ByVal strFieldMemo As String, _
  ByRef lngID As Long, _
  ByRef varMemo As Variant) _
  As String
 
  Const clngStrLen  As Long = &H8000&

  Dim strExpr       As String
  Dim strDomain     As String
  Dim strCriteria   As String
  Dim strMemo       As String
  Dim lngLen        As Long
 
  On Error GoTo Exit_LookupMemo

  If Not IsNull(varMemo) Then
    lngLen = Len(varMemo)
    If lngLen < clngStrLen Then
     
      strMemo = varMemo
    ElseIf Len(strSource) > 0 And Len(strFieldID) > 0 And Len(strFieldMemo) > 0 Then
     
      strExpr = strFieldMemo
      strDomain = strSource
      strCriteria = strFieldID & " = " & lngID & ""
      strMemo = vbNullString & DLookup(strExpr, strDomain, strCriteria)
    End If
  Else
   
  End If
 
  LookupMemo = strMemo

Exit_LookupMemo:
  Exit Function
 
Err_LookupMemo:
 
  Resume Exit_LookupMemo
 
End Function
0
mdstalla
Asked:
mdstalla
  • 4
  • 2
1 Solution
 
Nick67Commented:
Am I missing something here?  Can anyone think of what I’m doing wrong?
Memo text is evil.
There are many, many ways and times that it gets truncated, and that is an expected result.
http://allenbrowne.com/ser-63.html
DLookup(strExpr, strDomain, strCriteria)
is one of them.

What are you looking to accomplish?
0
 
mdstallaAuthor Commented:
I just want to be able to keep the Select Top 1 ordering-- but not have my memo fields get limited to 255 Characters.
0
 
Nick67Commented:
You can do a two step dosie-do
Take your Select Top 1 and remove the memo field

Then create a new query using your Top 1 saved query as one table, and the memo field table as the other.
Create an appropriate join
Select all the fields you need, including the memo.

See if that works for you
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
Nick67Commented:
Recordset code is less likely to truncate
You can try this

Public Function LookupMemo( _
   ByVal strSource As String, _
   ByVal strFieldID As String, _
   ByVal strFieldMemo As String, _
   ByRef lngID As Long, _
   ByRef varMemo As Variant) _
   As String

   Dim db as Database
   Set rs = CurrentDb.OpenRecordset("select " & strFieldMemo & " from " & strSource & " where " &  strFieldID & " = " & lngID & "", dbOpenDynaSet)
   if rs.RecordCount <> 0 then  
       LookupMemo = rs.fields(strExpr)
   Else
       LookupMemo = ""
   End If
   rs.close
   Set rs = nothing
 End Function 

Open in new window

0
 
mdstallaAuthor Commented:
Yah, Nick-- It's strange but the Parent Query doesn't cut the Memo-record off at 255 characters as long as the record comes from a Child Query rather than direct from a Table.  Very strange.

Anyway, your trick worked. Thanks for the tip.
0
 
Nick67Commented:
If you remember "Memo text is evil" you can google up most of the ways to work around it.
Or the times when you are going to be SOL
Like putting memo text in Excel cells, where 255 will display in the cell, 1024 in the formula bar, and the rest will get truncated.

Glad to be of service
0

Featured Post

Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now