Re: TZF - Many Thanks but more help needed
R & WL Hamilton <[email protected]>
| Newsgroups | gmane.comp.lang.delphi.topaz |
|---|---|
| Message-ID | <[email protected]> |
I note your comment:
re jumping out of the 'for ' loop ie setting x=y
this will not work.
You could you use your 'matchfound' boolean like this
x:=0
y:=max rec
while not(matchfound) and (x<>y) do begin
inc(x) //very important
your search...code
that would include matchfound=true etc...
this will loop until last record done or matchfound..
I think this will help jump out of that loop
end; {while}
Hope that is a bit of a help, I am sure the syntax is not 100% but if should
give
you an idea.
----- Original Message -----
From: "Jerry Mallett" <[email protected]>
To: <[email protected]>
Sent: February 9, 2003 8:06 PM
Subject: RE: TZF - Many Thanks but more help needed
> Thank you for your response.
>
> Code as requested.
>
> procedure TForm1.Compare1Click(Sender: TObject);
> var fn,ln : string; // FirstName -
> LastName Varaibles
> id1, id2, x,y : Integer; // id1 = db1 member
> and id2 = db2 member (x & y for RecNo and RecCount)
> MatchFound : Boolean; // wanted to use this to
> exit loop when a match is found
> begin
> TzDbf.Active := True;
> TzDbf.GoTop;
> X := 1; // Initialised this
> for the ShowMessage window to see what was happening
> id2 := 0; // Initialised this
> for the ShowMessage window to see what was happening
> While NOT TzDBF.dEOF Do
> Begin
> MatchFound := False;
> fn := Trim(TzDBF.GetCField('firstname')); // get
> firstname
> ln := Trim(TzDBF.GetCField('lastname')); // get
> lastname
> id1 := TzDBF.GetLongField('memberid'); // get current
> id number
>
> // Show it on screen to see if all is ok
>
> ShowMessage('Competitor - '+fn+' '+ln+
> ' is currently '+IntToStr(id1)+
> ' but should be '+IntToStr(id2));
>
> CompetitorsFrm.Competitors.Active := True;
> CompetitorsFrm.Competitors.GoTop;
> y := CompetitorsFrm.Competitors.RecCount; // get the total
> number of records in main database (db1)
> For x := 1 to y Do
> Begin
> If (fn =
> Trim(CompetitorsFrm.Competitors.GetCField('firstname'))) AND
> (ln =
> Trim(CompetitorsFrm.Competitors.GetCField('lastname'))) Then
>
> Begin // we found a match so enter and
> update/correct the db2 file
> MatchFound := True;
> id2 :=
> CompetitorsFrm.Competitors.GetLongField('memberid'); // get the
> membership number from current record
>
> // lets display it on screen to check we have got this far
>
> ShowMessage( ' Record No.'+IntToStr(x)+
> ' = Competitor - '+fn+' '+ln+
> ' is currently '+IntToStr(id1)+
> ' but should be '+IntToStr(id2));
>
> TzDbf.SetLongField('memberid',id2); // write it to db2
> TzDbf.Post; // post it
> to db2
> End
> Else
> // ok got lost here.....tried to do x := y which
> is total recordcount so that i could exit loop but it won't compile
>
> If MatchFound Then // then tried the boolean op. but
> ....help.
> CompetitorsFrm.Competitors.Go(x);
>
> End; // For x loop
> TzDBF.Skip(1); // skip to next record
> End;
> End;
>
>
>
> R & WL Hamilton wrote:
> > Can you give a code sample where it crashed? Is is a crash with an error
> > or an infinite loop of searching?
> >
> > How are you comparing db2 to the correct db1 number if your db2 member
> > number is missing or wrong?
> > Roger
> > ----- Original Message -----
> > From: "Jerry Mallett" <[email protected]>
> > To: <[email protected]>
> > Sent: February 9, 2003 7:30 PM
> > Subject: TZF - Many Thanks but more help needed
> >
> >
> > > Hi Guys.
> > >
> > > Many thanks to all those that responded to my last problem.
> > >
> > > Got another one now which I have just spent 6 hours on without
success.
> > >
> > > I'm self taught and still learning so go easy on me here.
> > >
> > > Two databases, First One containing all the proper and correct info on
> > > everyone in the club. About 1000 names addresses etc, plus a
membership
> > > number.
> > >
> > > Second one containing some 300 of the same names and membership
numbers
> > > but with different data.
> > >
> > > My problem is the membership nos have gone belly up in the second
> > > database and I tried to write a routine to compare db2 with db1, check
> > > the membership number from db2 with the original in db1, if they
didn't
> > > match update db2 with the proper membership number from db1.
> > >
> > > Used a WHILE loop to get info from each record in turn from db2 and
> > > nested a for next loop within the while loop which went through each
> > > record in turn of db1 to do a comparison. It only partly worked then
> > > crashed.
> > >
> > > Glad I don't do this for a living. I'd be an extremely poor man
today.
> > > lol
> > >
> > > Needless to say I haven't succeeded and was wondering if anyone can
> > > help...please.....
> > >
> > >
> > > Jerry
> > >
> > >
> >
> >
> >
>
>
>
> Top O the Morning to ye one and all
>
>
==^================================================================
This email was sent to: [email protected]
EASY UNSUBSCRIBE click here: http://topica.com/u/?clvXPN.a5kvff.Z2NsZHQt
Or send an email to: [email protected]
TOPICA - Start your own email discussion group. FREE!
http://www.topica.com/partner/tag02/create/index2.html
==^================================================================