Yep, as mentioned, a DLookup ONLY returns ONE record. And if you don't give it some criteria it will return the first record that the table or query that you have specified would return if it was opened. If you want to have your DLookup return the company for the row that the data is on, personally I would just include that table in the query and then select the field for it. It would be much more efficient and no delay in displaying it.
But if you insist on using the DLookup it could use this:
Code:
=DLookup("[Company Name]", "Companies", "[CompanyID] = " & [CompanyID])
So if you have a field named CompanyID in your companies table (which you should) then you can lookup the company name based on the companyID that is in the control or field named CompanyID on the form (which is why I have it concatenated into the value. If CompanyID is text then it would need to be:
Code:
=DLookup("[Company Name]", "Companies", "[CompanyID] = " & Chr(34) & [CompanyID] & Chr(34))