Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Convert ASCII to String

Posted on 2007-12-04
17
Medium Priority
?
5,521 Views
Last Modified: 2013-11-27
I have a table containing a lot of text, contained within the text is ASCII coding, I am looking for a way to update the ASCII code to its string value
E.g. change [ to [
0
Comment
Question by:daverichardson
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 4
  • 3
  • +2
17 Comments
 
LVL 75
ID: 20404292
Well, Chr(91) will return [

mx
0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 20404297
you will need an update query

update NameOftable
set [fieldName]=replace([fieldName],"#91",chr(91))

0
 
LVL 75
ID: 20404307
Chr(Replace("&#91","&#",""))  

returns

[
0
Nothing ever in the clear!

This technical paper will help you implement VMware’s VM encryption as well as implement Veeam encryption which together will achieve the nothing ever in the clear goal. If a bad guy steals VMs, backups or traffic they get nothing.

 

Author Comment

by:daverichardson
ID: 20404417
Thanks for the replies, I should have made myself a bit clearer [ isnt the only ASCII coding that was just an example there are lots of different characters. I was looking for a way to convert all ASCII coding to string.
0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 20404493
well, you have to give more info regarding your table.

you  will need a function to do that.
*open the table as recordset
*locate and replace all occurence of the ASCII characters


if you can zip your db and upload (Now, i'll be busy later on) here www.ee-stuff.com 
i can write you a function to do that..


0
 
LVL 15

Expert Comment

by:JimFive
ID: 20404560
Create a Function as below.  Use the Function in your query.

--Jimfive
Function htmlUnFormat(s As String) As String
Dim done As Boolean
Dim LocStart, LocEnd As Integer
Dim char As String
 
done = False
While Not done
    LocStart = InStr(1, s, "&#")
    If LocStart = 0 Then
        done = True
    Else
        LocEnd = InStr(LocStart, s, ";")
        If LocEnd > LocStart Then
            char = Mid(s, LocStart + 2, LocEnd - LocStart - 2)
            If IsNumeric(char) Then
                s = Replace(s, Mid$(s, LocStart, LocEnd - LocStart + 1), Chr(CInt(char)))
            End If
        Else
            done = True
        End If
    End If
Wend
htmlUnFormat = s
End Function

Open in new window

0
 

Author Comment

by:daverichardson
ID: 20404733
JimFive i get invalid procedure call or argument on this line
s = Replace(s, Mid$(s, LocStart, LocEnd - LocStart + 1), Chr(CInt(char)))
0
 
LVL 15

Expert Comment

by:JimFive
ID: 20405217
Hmm...Try Mid instead of Mid$
--
JimFive
0
 
LVL 5

Expert Comment

by:TheGD
ID: 20405267
Your problem is very simple and can be solved by the following code.

Follow the following instructions:
1. Create a New Module in your Database.
2. Copy Paste the following code into that newly created Module that I have written just for your custom need
3. Press F5 and then Press Enter.
4. Enter Table Name to FIX, i.e. to replace ALL &#code; patterns with their character equivalents

I have tested it on your Uploaded Table and found it fully functionaly and bugs free, so Enjoy!

Option Compare Database
 
Function ConvertASCII(s As String) As String
    Dim str As String, st As Integer, prevst As Integer, i As Integer
    str = ""
    st = 1
    i = 0
    Do
        i = InStr(st, s, "&#")
        If i <> 0 Then
            If i <> 1 Then
                str = str + Mid(s, st, i - st)
            End If
            st = InStr(i, s, ";") + 1
            str = str + ChrW(Int(Mid(s, i + 2, st - 1 - i - 2)))
        Else
            str = str + Mid(s, st)
        End If
    Loop While i <> 0
    
    ConvertASCII = str
End Function
 
Sub FixTable()
    Dim r As Recordset
    Dim TableName As String
    
    TableName = InputBox("Enter Table Name to Fix ASCIIs", "Table Name", "tmp")
    'On Error GoTo Err
    Set rs = CurrentDb.OpenRecordset("Select * From " & TableName)
    Do While Not rs.EOF
        rs.Edit
        
        For i = 0 To rs.Fields.Count - 1
            rs.Fields(i) = ConvertASCII(rs.Fields(i))
        Next
        
        rs.Update
        rs.MoveNext
    Loop
    rs.Close
    
    MsgBox "Done!"
    
    Exit Sub
Err:
    If Err.Number = 3078 Then
        MsgBox "The table name is invalid. No such table in the current database.", vbCritical, "Table not exist"
    Else
        MsgBox "Error: " & Err.Description
    End If
End Sub

Open in new window

0
 

Author Comment

by:daverichardson
ID: 20405310
That didnt work either, Its throwing the error on this value &#8482;
0
 
LVL 75
ID: 20405353
I believe 8482 is in the extended ASCII set ...


"The ChrW function returns a String containing the Unicode character except on platforms where Unicode is not supported, in which case, the behavior is identical to the Chr function"


mx
0
 

Author Comment

by:daverichardson
ID: 20405472
TheGD that works great, except if it comes across a null field then I get invalid use of null error
0
 
LVL 15

Expert Comment

by:JimFive
ID: 20405569
As DatabaseMX suggested.  Change the Chr to ChrW
--
JimFive
0
 
LVL 15

Accepted Solution

by:
JimFive earned 500 total points
ID: 20405604
It also appears that my code will have a problem if the string contains a &# that does not indicate a valid character. e.g. a string like: "What the &#!*; is this"

Try this revision:
Function htmlUnFormat(s As String) As String
Dim done As Boolean
Dim LocStart, LocEnd As Integer
Dim char As String
 
done = False
While Not done
    LocStart = InStr(1, s, "&#")
    If LocStart = 0 Then
        done = True
    Else
        LocEnd = InStr(LocStart, s, ";")
        If LocEnd > LocStart Then
            char = Mid(s, LocStart + 2, LocEnd - LocStart - 2)
            If IsNumeric(char) Then
                s = Replace(s, Mid(s, LocStart, LocEnd - LocStart + 1), ChrW(CInt(char)))
            Else
                done = True
            End If
        Else
            done = True
        End If
    End If
Wend
htmlUnFormat = s
End Function

Open in new window

0
 
LVL 5

Assisted Solution

by:TheGD
TheGD earned 500 total points
ID: 20409379
O Yes, the Null field was not not in your uploaded database so this error didnt came across me. Here is the revision of my previous code in which All the Null Fields would be ignored:
Option Compare Database
 
Function ConvertASCII(s As String) As String
    Dim str As String, st As Integer, prevst As Integer, i As Integer
    str = ""
    st = 1
    i = 0
    Do
        i = InStr(st, s, "&#")
        If i <> 0 Then
            If i <> 1 Then
                str = str + Mid(s, st, i - st)
            End If
            st = InStr(i, s, ";") + 1
            str = str + ChrW(Int(Mid(s, i + 2, st - 1 - i - 2)))
        Else
            str = str + Mid(s, st)
        End If
    Loop While i <> 0
    
    ConvertASCII = str
End Function
 
Sub FixTable()
    Dim r As Recordset
    Dim TableName As String
    
    TableName = InputBox("Enter Table Name to Fix ASCIIs", "Table Name", "tmp")
    On Error GoTo Err
    Set rs = CurrentDb.OpenRecordset("Select * From " & TableName)
    Do While Not rs.EOF
        rs.Edit
        
        For i = 0 To rs.Fields.Count - 1
            rs.Fields(i) = ConvertASCII(rs.Fields(i))
        Next
        
        rs.Update
        rs.MoveNext
    Loop
    rs.Close
    
    MsgBox "Done!"
    
    Exit Sub
Err:
    If Err.Number = 3078 Then
        MsgBox "The table name is invalid. No such table in the current database.", vbCritical, "Table not exist"
    ElseIf Err.Number = 94 Then 'IGNORE NULL FIELD
        Resume Next
    Else
        MsgBox "Error: " & Err.Description
    End If
End Sub

Open in new window

0
 

Author Comment

by:daverichardson
ID: 20409669
Thanks Guys
0

Featured Post

Implementing Azure Infrastructure Exam 70-533

This course is designed to familiarize and instruct students in the content that is covered by Microsoft Exam 70-533, Implementing Microsoft Azure Solutions. It focuses on all the November 2016 objective domain topics.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In earlier versions of Windows (XP and before), you could drag a database to the taskbar, where it would appear as a taskbar icon to open that database.  This article shows how to recreate this functionality in Windows 7 through 10.
Code that checks the QuickBooks schema table for non-updateable fields and then disables those controls on a form so users don't try to update them.
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…

722 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question