We help IT Professionals succeed at work.

search a record and display result.

elniniokev
elniniokev asked
on
255 Views
Last Modified: 2010-04-16
HERE IS THE PROCEDURE I NEED HELP WITH.

[1] I NEED TO ASK FOR A CUSTOMER NUMBER AND THEN SEARCH  THE FILE CUSFILE,CUSTOMER.DAT     WHERE THE INFO IS STORED THEn DISPLAY APPROPRIATE INFO i.e. name address. . then store it to orderfile.

[2] THE CUSFILE,CUSTOMER.DAT WERE MADE USING THE SAME FORMAT AS THIS, I CAN SCROLL THROUGH THE RECORDS BUT CAN'T PICK OUT INDIVIDUAL ONES IN A SEARCH.


        PROCEDURE Order;

        type
         ORDER    = record
                           GETDATE  ;
         CUST_NUM         :INTEGER;                    
         CUST_NAME        : string[20];
         CUST_address     : string[40];
         COSTUME_NUMBER   :INTEGER;
         COSTUME_DESC     :STRING;
         QUANTITY         :INTEGER;
         LOH              :STRING;
         RETURNDATE       :STRING;
         DELIVERY         :CHAR;

               end;

var
   ORDERFILE : file of ORDER;
   c : char;
   X : ORDER;

   n : integer;
begin




   assign(ORDERFILE,'ORDER.DAT');           { Associate it }
   {$I-}
      reset(ORDERFILE);           { First, open it }
   {$I+}

   n:=IOResult;
   if n<>0 then           { If it's doesn't exist then }
   begin
      {$I-}
         rewrite(ORDERFILE);      { Create it    }
      {$I+}
      n:=IOResult;
      if n<>0 then
      begin
         writeln('Error creating file !'); halt;
      end;
   end
   else
   begin                  { If it exists then }
      n:=filesize(ORDERFILE);     { Calculate total record }
      seek(ORDERFILE,N);          { Move file pointer PAST the last record }
   end;

   repeat

      writeln('File position : ',filepos(ORDERFILE));
      WRITELN;
      WRITELN;
      write('DATE IS              = '); readln(X.DATE);     { Input data }
      write('CUSTOMER NUMBER      = '); readln(number);
      ???

      write('CUSTOMER NAME IS     = '); readln(X.CUST_NAME);
      write('CUSTOMER ADRESS IS   = '); readln(x.cust_address);
      write('ENTER COSTUME NUMBER = '); READLN(x.COSTUME_NUMBER);
      WRITE('COSTME DESC IS       = '); READLN(X.COSTUME_DESC);
      WRITE('ENTER QUANTITY       = '); READLN (X.QUANTITY);
      WRITE('LOH                  = '); READLN(X.LOH);
      WRITE('RETURN DATE          = '); READLN(X.RETURNDATE);
      WRITE('DELIVERY Y OR N      = '); READLN(X.DELIVERY);



      write(ORDERFILE,X);                 { Write data to file }

      write('Input data again (Y/N) ?');
      repeat
         c:=upcase(readkey);      { Ask user : Input again or not }
      until c in ['Y','N'];
      writeln(c);
   until c='N';

   close(ORDERFILE);
end;

END.
Comment
Watch Question

Commented:
Hi try this

function Search(Index: integer; var Result: Order): boolean;
{Search a record by Index(Cust_Num) if found then function return true and info in the "Result" , if not found then return False}
var
  Temp: Order;
  Found: Boolean;
begin
  reset(orderfile);
  Found := False;
  while (not eof(OrderFile))and(not Found) do
    begin
       read(orderfile,Temp);
       if index = Temp.Cust_Num then
       begin            
          Found := True;
          Result := Temp;      
       end;  
    end;
   Search := Found;
   Close(OrderFile);
end;{Of function}


{and you may call it like this}
var
 x: Order;
 n: integer;
begin
Write('Input Customer Number to Search for: ');
readln(n);
if Search(n, x) then
 Begin
   {Write the field of x}
 end
else
  Writeln('search record not found');
end.

Commented:
Hi try this

function Search(Index: integer; var Result: Order): boolean;
{Search a record by Index(Cust_Num) if found then function return true and info in the "Result" , if not found then return False}
var
  Temp: Order;
  Found: Boolean;
begin
  reset(orderfile);
  Found := False;
  while (not eof(OrderFile))and(not Found) do
    begin
       read(orderfile,Temp);
       if index = Temp.Cust_Num then
       begin            
          Found := True;
          Result := Temp;      
       end;  
    end;
   Search := Found;
   Close(OrderFile);
end;{Of function}


{and you may call it like this}
var
 x: Order;
 n: integer;
begin
Write('Input Customer Number to Search for: ');
readln(n);
if Search(n, x) then
 Begin
   {Write the field of x}
 end
else
  Writeln('search record not found');
end.

Commented:
Hi try this

function Search(Index: integer; var Result: Order): boolean;
{Search a record by Index(Cust_Num) if found then function return true and info in the "Result" , if not found then return False}
var
  Temp: Order;
  Found: Boolean;
begin
  reset(orderfile);
  Found := False;
  while (not eof(OrderFile))and(not Found) do
    begin
       read(orderfile,Temp);
       if index = Temp.Cust_Num then
       begin            
          Found := True;
          Result := Temp;      
       end;  
    end;
   Search := Found;
   Close(OrderFile);
end;{Of function}


{and you may call it like this}
var
 x: Order;
 n: integer;
begin
Write('Input Customer Number to Search for: ');
readln(n);
if Search(n, x) then
 Begin
   {Write the field of x}
 end
else
  Writeln('search record not found');
end.

Commented:
Hi try this

function Search(Index: integer; var Result: Order): boolean;
{Search a record by Index(Cust_Num) if found then function return true and info in the "Result" , if not found then return False}
var
  Temp: Order;
  Found: Boolean;
begin
  reset(orderfile);
  Found := False;
  while (not eof(OrderFile))and(not Found) do
    begin
       read(orderfile,Temp);
       if index = Temp.Cust_Num then
       begin            
          Found := True;
          Result := Temp;      
       end;  
    end;
   Search := Found;
   Close(OrderFile);
end;{Of function}


{and you may call it like this}
var
 x: Order;
 n: integer;
begin
Write('Input Customer Number to Search for: ');
readln(n);
if Search(n, x) then
 Begin
   {Write the field of x}
 end
else
  Writeln('search record not found');
end.

Commented:
Sorry i submited it more than one time but the internet here is not work better
:).
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION
dbruntonQuid, Me Anxius Sum?  Illegitimi non carborundum.
CERTIFIED EXPERT

Commented:
{

ERE IS THE PROCEDURE I NEED HELP WITH.

[1] I NEED TO ASK FOR A CUSTOMER NUMBER AND THEN SEARCH  THE FILE
CUSFILE, CUSTOMER.DAT     WHERE THE INFO IS STORED THE DISPLAY APPROPRIATE INFO i.e.
name address. . then store it to orderfile.

[2] THE CUSFILE,CUSTOMER.DAT WERE MADE USING THE SAME FORMAT AS THIS, I CAN
SCROLL THROUGH THE RECORDS BUT CAN'T PICK OUT INDIVIDUAL ONES IN A SEARCH.


The coding here needs tidying up.  Run it and try it.  
}

program doit;
uses crt;

type
  ORDERTYPE    = record
    DATE : string[20];
    CUST_NUM         :INTEGER;
    CUST_NAME        : string[20];
    CUST_address     : string[40];
    COSTUME_NUMBER   :INTEGER;
    COSTUME_DESC     :STRING;
    QUANTITY         :INTEGER;
    LOH              :STRING;
    RETURNDATE       :STRING;
    DELIVERY         :CHAR;
end;

var
  ORDERFILE : file of ORDERTYPE;
  c : char;
  X : ORDERTYPE;
  n : integer;
  cusno : integer;
  recordfound : integer;

PROCEDURE Order;
begin
  assign(ORDERFILE, 'ORDER.DAT');           { Associate it }
  {$I-}
  reset(ORDERFILE);           { First, open it }
  {$I+}
  n := IOResult;
  if n <> 0 then           { If it's doesn't exist then }
    begin
    {$I-}
      rewrite(ORDERFILE);      { Create it    }
     {$I+}
      n := IOResult;
      if n <> 0 then
        begin
          writeln('Error creating file !'); halt;
        end;
    end
  else
    begin                  { If it exists then }
      n := filesize(ORDERFILE);     { Calculate total record }
      seek(ORDERFILE,N);          { Move file pointer PAST the last record }
    end;
  repeat
    writeln('File position : ',filepos(ORDERFILE));
    WRITELN;
    WRITELN;
    write('DATE IS              = '); readln(X.DATE);     { Input data }
    write('CUSTOMER NUMBER      = '); readln(X.CUST_num);
    write('CUSTOMER NAME IS     = '); readln(X.CUST_NAME);
    write('CUSTOMER ADRESS IS   = '); readln(x.cust_address);
    write('ENTER COSTUME NUMBER = '); READLN(x.COSTUME_NUMBER);
    WRITE('COSTME DESC IS       = '); READLN(X.COSTUME_DESC);
    WRITE('ENTER QUANTITY       = '); READLN (X.QUANTITY);
    WRITE('LOH                  = '); READLN(X.LOH);
    WRITE('RETURN DATE          = '); READLN(X.RETURNDATE);
    WRITE('DELIVERY Y OR N      = '); READLN(X.DELIVERY);
    write(ORDERFILE, X);                 { Write data to file }
    write('Input data again (Y/N) ?');
    repeat
      c:=upcase(readkey);      { Ask user : Input again or not }
    until c in ['Y','N'];
    writeln(c);
  until c='N';
  close(ORDERFILE);
end;

procedure show;
begin
  reset(orderfile);
  while not eof(orderfile) do
  begin
    read(orderfile, x);
    writeln(x.date);
    writeln(x.cust_num);
    writeln(x.cust_name);
    writeln(x.cust_address);
  end;
end;

procedure searchforcusno(no : integer);
var
  whichrecord : integer;
begin
  reset(orderfile);
  recordfound := 0;
  whichrecord := 0;
  while not eof(orderfile) do
  begin
    read(orderfile, x);
    if x.cust_num = no then
      recordfound := whichrecord;
    inc(whichrecord);
  end;
end;

procedure findandshowrecord(no : integer);
var
  recordno : integer;
begin
  reset(orderfile);
  recordno := 0;
  while not eof(orderfile) do
  begin
    read(orderfile, x);
    if recordno = no then
      writeln(x.cust_num);
    inc(recordno);
  end;
end;

begin
  Order;
  show;
  writeln('What customer number do you want?');
  readln(cusno);
  searchforcusno(cusno);
  if recordfound <> 0 then
    findandshowrecord(recordfound);
END.
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.