Solved

# need help on a search prog

Posted on 2002-04-28
144 Views
My prog is simple. I need someone to correct the following code. I have a great number of invoives with data such as invoice #, date, amount.etc.
I need code to retrieve by invoice#.

here is the code that WON'T work!

inv2 = Form4.Text1.Text

Dim inv As String * 8
Dim ddate As String * 9
Dim amt As String * 7
Dim amt5 As String * 7
Dim deal As String * 20
Dim paid As String * 3

Open "C:\invoice\dollar.dat" For Input As #1
X1% = 0
Do While (Not EOF(1))
Input #1, inv, ddate, amt, amt5, deal, paid
If inv = inv2 Then
hit\$ = "yes"
MsgBox "Found it", , ib
Exit Do
Else
X1% = X1% + 1
'nd If
'Loop
If hit\$ = "no" Then
Max% = X1%
End If
X1% = X1% + 1

'oop
'Max% = X1%
'lose 1
'Open "C:\invoice\dollar.dat" For Input As #3
'X1% = 0
'Do While (Not EOF(1))
' Input #1, inv, ddate, amt, amt5, deal, paid
' If inv = inv2 Then
' hit\$ = "yes"
' MsgBox "Found it", , ib
' Exit Do
' Else
X1% = X1% + 1
End If
Loop
If hit\$ = "no" Then
Max% = X1%
End If

Form4.Visible = False
Form3.Visible = True
Form3.Text1.Text = inv
End Sub

I am using vb4
0
Question by:hjaycox
• 2

LVL 45

Expert Comment

ID: 6976194
I've removed the comments and indented for clarity:

Open "C:\invoice\dollar.dat" For Input As #1
X1% = 0

Do While (Not EOF(1))
Input #1, inv, ddate, amt, amt5, deal, paid
If inv = inv2 Then
hit\$ = "yes"
MsgBox "Found it", , ib
Exit Do
Else
X1% = X1% + 1

If hit\$ = "no" Then
Max% = X1%
End If
X1% = X1% + 1

X1% = X1% + 1
End If

Loop

If hit\$ = "no" Then
Max% = X1%
End If

===============================================

1. you are incrementing X1% too many times
2. what is the ib variable used in msgbox statement?
3. you should initialize hit\$ = "no" before you start looping.
4. look at the data and type the inventory number of the first record.  Set a breakpoint in this code and step through it, inspecting the inv value after the Input statement and the inv2 variable.
0

LVL 3

Accepted Solution

n_narayanan earned 200 total points
ID: 6976703
Try this,
din inv2 as string * 8
inv2 = left(trim(Form4.Text1.Text),8)
'Make sure that you have set the text1.maxlength
'property to 8
Dim inv As String * 8
Dim ddate As String * 9
Dim amt As String * 7
Dim amt5 As String * 7
Dim deal As String * 20
Dim paid As String * 3
dim hit as string

hit\$="no"

Open "C:\invoice\dollar.dat" For Input As #1
X1% = 0
Do While (Not EOF(1))
Input #1, inv, ddate, amt, amt5, deal, paid
if eof(1) then
exit do
end if
If trim(inv) = inv2 Then
hit\$ = "yes"
MsgBox "Invoice Found"
Exit Do
Else
X1% = X1% + 1
End If
Loop

If hit\$ = "no" Then
Max% = X1%
End If
Form4.Visible = False
Form3.Visible = True
Form3.Text1.Text = inv
End Sub

Cheers

Narayanan
0

LVL 45

Expert Comment

ID: 6976946
I guess I should have asked you:

1. Do you really need the fixed lengths on your string variables?
2. Is your file comma-delimited or are you incorrectly trying to do record I/O with an input statement instead of a Get statement?

The answer to 2 will be determined by my diagnostic steps.
0

Author Comment

ID: 6979152
had to change one code line
if trim(inv)= inv2 then  to  if inv = inv2 and it works

thanks

look for my next question on the same prog
0

## Featured Post

Question has a verified solution.

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

### Suggested Solutions

Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
This article describes some techniques which will make your VBA or Visual Basic Classic code easier to understand and maintain, whether by you, your replacement, or another Experts-Exchange expert.
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…