hmm... how does it add lines? I just see setting values in that loop.
Remember that each label is actually a long column and not just a single row label, after reading each result from the database and amending each label via the code above, I then add the following to the end of each append ready for the next item/line.
It simply reads the results and then amends the correct columns until the list is complete.
First the description column is empty.
Read and add the 1st result then add a CRLF
Description column (LblDescription) now looks like
Toshiba Laptop
Read and add the 2nd result then add a CRLF
Description column (LblDescription) now looks like
Toshiba Laptop
Microsoft Mouse
Read and add the 3rd result then add a CRLF
Description column (LblDescription) now looks like
Toshiba Laptop
Microsoft Mouse
Mouse Mat
Read and add the 4th result then add a CRLF
Description column (LblDescription) now looks like
Toshiba Laptop
Microsoft Mouse
Mouse Mat
Laptop case
Etc etc etc.
Basically all the loop is doing is amending each column with the item details (the shortest routine I can currently think of). There's no need to dynamically add lots of labels, I just keep amending the correct column followed by a CRLF.
Yes that's all the code that is needed for populating the 7 columns for the items, the SQL query is also there, the database is already open, I close the connection after the last item is read.
The code above generates the list blow in the redacted screenshot below.