Solved

need help on a search prog

Posted on 2002-04-28
4
142 Views
Last Modified: 2012-05-08
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
Comment
Question by:hjaycox
  • 2
4 Comments
 
LVL 45

Expert Comment

by:aikimark
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
      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
 
LVL 3

Accepted Solution

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

Cheers

Narayanan
0
 
LVL 45

Expert Comment

by:aikimark
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

by:hjaycox
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

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Introduction I needed to skip over some file processing within a For...Next loop in some old production code and wished that VB (classic) had a statement that would drop down to the end of the current iteration, bypassing the statements that were c…
The debugging module of the VB 6 IDE can be accessed by way of the Debug menu item. That menu item can normally be found in the IDE's main menu line as shown in this picture.   There is also a companion Debug Toolbar that looks like the followin…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…

746 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now