Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 149
  • Last Modified:

need help on a search prog

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
MsgBox "invoice not found", , ib
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
MsgBox "invoice not found", , ib
Max% = X1%
End If

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


I am using vb4
0
hjaycox
Asked:
hjaycox
  • 2
1 Solution
 
aikimarkCommented:
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
      MsgBox "invoice not found", , ib
      Max% = X1%
    End If
    X1% = X1% + 1
   
    X1% = X1% + 1
  End If

Loop

If hit$ = "no" Then
  MsgBox "invoice not found", , ib
  Max% = X1%
End If

===============================================
Comments and questions:

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
 
n_narayananCommented:
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
   MsgBox "invoice not found"
   Max% = X1%
End If
Form4.Visible = False
Form3.Visible = True
Form3.Text1.Text = inv
End Sub

Cheers

Narayanan
0
 
aikimarkCommented:
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
 
hjaycoxAuthor Commented:
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

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

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