Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

Access Query to find H99999

Posted on 2013-01-28
25
Medium Priority
?
384 Views
Last Modified: 2013-01-29
In an Access 2010 Query,
I have a field with a string of 75 characters and I need to find the the record ID numbers Named [LOG_ID] where the field named [SYMP_TEXT1]  has an "H" followed by 5 numbers.
I tried like "*h#####" but it doesn't work.
0
Comment
Question by:Mswetsky
  • 12
  • 5
  • 4
  • +1
24 Comments
 
LVL 120

Assisted Solution

by:Rey Obrero (Capricorn1)
Rey Obrero (Capricorn1) earned 200 total points
ID: 38827439
use
like  "*h#####*"
0
 
LVL 49

Expert Comment

by:Dale Fye
ID: 38827455
If the H must be the first character in the field, then use:

Like "H#####*"
0
 
LVL 1

Author Comment

by:Mswetsky
ID: 38827482
These suggestions
do not catch the number when it was in the following

DH,Info. Employee# H83784
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 1

Author Comment

by:Mswetsky
ID: 38827488
The H could be upper or lower case
0
 
LVL 1

Author Comment

by:Mswetsky
ID: 38827501
Once I get the record I need to pull only the string  "*h#####*" into another field
0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 38827504
what do you mean?

post your query

this should catch it

like  "*h#####*"
0
 
LVL 1

Author Comment

by:Mswetsky
ID: 38827513
Can I retrieve "*h#####*" into another column with instr ??
0
 
LVL 1

Author Comment

by:Mswetsky
ID: 38827518
Return the record
And then I need to add the h????? to another field
0
 
LVL 1

Author Comment

by:Mswetsky
ID: 38827524
SELECT [6040].LOG_ID, [6040].SYMP_TEXT1, InStr([SYMP_TEXT1],"H") AS HPosit, "H" & (Mid([SYMP_TEXT1],([HPosit]+1),6)) AS Expr1
FROM 6040
WHERE ((([6040].SYMP_TEXT1) Like "*H#####"));
0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 38827533
you may need vba codes to do that, try this


Expr1: Mid([SYMP_TEXT1],InStrRev([SYMP_TEXT1],"h"),6)
0
 
LVL 1

Author Comment

by:Mswetsky
ID: 38827548
In this example I get the incorrect result

DH,Info. Employee# H83784
0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 38827593
did you use my last post ?

Expr1: Mid([SYMP_TEXT1],InStrRev([SYMP_TEXT1],"h"),6)
0
 
LVL 49

Assisted Solution

by:Dale Fye
Dale Fye earned 400 total points
ID: 38827600
No, you are not going to be able to do it with a simple use of instr or instrrev.

Your best bet is to create a function, something like:
Public Function GetH(FindIn as Variant) as Variant

    Dim myString as string

    'If the value passed was NULL, then exit the function, returning NULL
    if FindIn & "" = "" Then Exit Function

    myString = FindIn
    While instr(myString, "H") > 0
        myString = Mid(MyString, instr(myString, "H"))
        If Left(myString, 6) Like "H#####" Then
            GetH = Left(myString, 6)
            Exit Function
        End If
    Wend

    GetH = NULL

End Function

Open in new window


Then you can call this in your SQL:

SELECT GetH([SYMP_TEXT1]) FROM yourTable WHERE GetH([SYMP_TEXT1]) IS NOT NULL
0
 
LVL 1

Author Comment

by:Mswetsky
ID: 38827617
Capricorn Yes I did
0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 38827631
what is wrong with the result form this record

In this example I get the incorrect result

DH,Info. Employee# H83784


it should return H83784

take note of the function i used  INSTRREV
0
 
LVL 40

Expert Comment

by:als315
ID: 38827652
Try this function:
Function getid(A As Variant) As Variant
Dim i As Integer, C As String, D As String
getid = Null
If IsNull(A) Then Exit Function
For i = 1 To Len(A) - 5
    C = Mid(A, i, 1)
    If C = "H" Or C = "h" Then
        D = Trim(Mid(A, i + 1, 5))
        
        If Len(D) = 5 And IsNumeric(D) Then
            getid = C & D
            Exit For
        End If
    End If
Next i
End Function

Open in new window

Sample strings:
DH,Info. Employee# H83784
DH,Info. Employee# H8378 DH,Info.  H83784Employee#
0
 
LVL 1

Author Comment

by:Mswetsky
ID: 38827662
I am sorry for my incomplete original question.
When I return the correct records I need to extract that string h#####
0
 
LVL 1

Author Comment

by:Mswetsky
ID: 38827669
by: fyed
I get a message GetH undefined when I try the query
0
 
LVL 40

Accepted Solution

by:
als315 earned 1400 total points
ID: 38827686
Look a sample DB
DBH-.accdb
0
 
LVL 49

Expert Comment

by:Dale Fye
ID: 38827695
mswetsky,

You will have to put that code in a standard code module, not one that belongs to a specific form or report.  

In the VBA code window, right click in the Project window(normally in the upper left), then select Insert Module.  Then paste the code into that new module, and try again.
0
 
LVL 1

Author Comment

by:Mswetsky
ID: 38827738
I really appreciate all of  the suggestions provided I accepted als315 because it included a sample that worked with a mock table etc.

I always learn from your suggestions THANK YOU ALL
0
 
LVL 40

Expert Comment

by:als315
ID: 38827759
"I accepted als315 " ????
0
 
LVL 49

Expert Comment

by:Dale Fye
ID: 38827767
Oops, you actually accepted my solution, not als's.

Click on the "Request Assistance" link in the bottom right of your original question and ask the moderators to re-open the question so you can redistribute the points.
0
 
LVL 1

Author Closing Comment

by:Mswetsky
ID: 38830770
Thank you all for your suggestions
I appreciate the replies and chance to learn.
I selected als because there was a sample database with an easy to use solution
0

Featured Post

Free learning courses: Active Directory Deep Dive

Get a firm grasp on your IT environment when you learn Active Directory best practices with Veeam! Watch all, or choose any amount, of this three-part webinar series to improve your skills. From the basics to virtualization and backup, we got you covered.

Question has a verified solution.

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

Microsoft Access is a place to store data within tables and represent this stored data using multiple database objects such as in form of macros, forms, reports, etc. After a MS Access database is created there is need to improve the performance and…
Windows Explorer lets you open cabinet (cab) files like any other folder. In VBA you can easily handle normal files and folders, but opening and indeed creating cabinet files takes a lot more - and that's you'll find here.
With Microsoft Access, learn how to specify relationships between tables and set various options on the relationship. Add the tables: Create the relationship: Decide if you’re going to set referential integrity: Decide if you want cascade upda…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …
Suggested Courses

578 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