If you were going Random Access route the customer ID would be same as record number, so you just GET record # of customer. Random Access depends upon records and fields of a record being exactly the same size so lots of empty spaces for all strings records/fields.
But I think you might like variable length fields and Steve had start of that somewhere, ah here:
https://www.qb64.org/forum/index.php?topic=3076.msg123525#msg123525Steves method depends on keeping another file to record lengths of each and every field.
Another approach with variable length depends on using delimiters for records and another for fields in record. Use Split as parser, use of CHR$(10) would be good to separate records (called delimiter) and another character to delimit the fields (each item in your customer Type). You'd first SPLIT the file into records array and then each record split again by another delimiter (maybe comma or semi colon or colon?) and ideally your fields would be in same order.
Split1000 very powerful and handy parser:
https://www.qb64.org/forum/index.php?topic=1607.0And still your customer ID number could be same as record number = array index after split files into records for fast lookup of a customer.
sample file: fields comma delimited and records chr$(10) delimited:
fileStr$ = "1,ZEF,DURGEN,MOUNT, ,REYNO,AR,12345,0123456789,moo@zap.com" + chr$(10) +
"2,BOB,MOLE,KIM DR, ,BIGGERS,AR,65432,1234567890,bee@mook.com" + chr$(10) + ...
customer ID = same as record #
in an editor chr$(10) is same as next line, so piece of cake to write the file in a standard text editor (no double quotes each line is record.)
Also with variable length strings you don't have to use TYPE with fixed strings but TYPE might be used with variable strings to keep better organized and labeled specially with 11 fields. Just have to JOIN fields to make a record and JOIN records to make a single giant string to store back as file. JOIN is opposite of split building strings with commas between each field the building file string with CHR$(10) between each record.
RANDOM ACCESS doesn't need the splits and joins nor another file to track lengths of ever individual field, it just uses allot empty space to ensure each field from Type is same size so records are same size so you can GET or PUT records a chunk at a time.