I'll add another thought...
In the past I have had cases similar to yours when dealing with physical process sensors. Building energy management and oil/gas pipeline projects, among others. A LONG time ago. We at first said, "Oh darn! there are so many different aspects of these controls and sensors and observables... we need so many different things to track them all." But we allowed ourselves to reconsider structures more loosely so that we were able to identify parts that were common even though they had totally different names for the two items.
I understand that product liability and personal injury cases have totally different elements. Yet there is another way to view this, involving inversion of your storage scheme. Think of the way Access actually stores object properties...
Suppose, for example, you had your case table and ONE attributes table. BUT one of the attribute fields was a definition/type code for the attribute.
So you could have a record that said,
case 1245, "Client", "Joe Blow"
case 1245, "Client", "Mike Schmoe"
case 1245, "Client", "Jane Doe"
case 1245, "Witness", "Ima Nosygirl"
case 1245, "Judge", "Roy Bean"
case 1245, "Section", "A"
In the master record for case 1245, you would have a code for case type. In a case type table, you would have a code that corresponded to case types. Like, case type "SF" is slip-and-fall, case type PL is "product liability", case type "TGM" is tort gold-mine, etc. Then you could have a table of attribute codes that corresponded to things that could be present for each type of case, where the case type code is a foreign key to the case-type table and the individual records with that case-type are things you might see as atrributes of the case.
You could create one table for each type of thing you can store. For instance, a "currency" attributes table. A "text" attributes table. A "LONG" attributes table. A "dates" table. (You might consider that sometimes, a narrative or MEMO field should be in a separate table because having memo fields can sometimes screw you up.) In this case, you have a second code in the "attributes list" table that showed the data type of the attribute, which would let you find the correct attributes table.
Link them all with case number, an attribute code, and the value in the indicated format. So three fields each: Case, Code, Value.
The queries for this get a bit ugly, but with judiciously chosen (pardon the minor pun) queries, you can find what you need with sub-reports for any section that normally needs to be listed because of many-to-one attributes. By splitting the fields up as sub-reports, you can qualify the lists based on their sources. No one source table would exceed the limits. I.e. - by splitting the tables only as far as attribute type, you assure that the total query record doesn't exceed 255 fields or 2048 bytes, either of which would kill the query.
This is an advanced concept, but it is workable if you invert your logic just a little bit.
When searching for clients, you would search the TextAttributes table for attribute type-code "Client". When searching for product names, you would search the TextAttributes table for attribute type-code "Product Name". Obviously, there is a lot of set-up to this. The beauty is that if you take on a new type of case, all you do is add entries to the attributes table.
OK, how would you report this stuff? Several ways come to mind. In the ultimate report, you could even do UNION queries where you have, say, ...
SELECT CaseNum, AttribName, CStr( AttribValue ) FROM LongAttribs
UNION
SELECT CaseNum, AttribName, Format( AttribValue, "ShortDate" ) FROM DateAttribs
UNION
SELECT CaseNum, AttribName, AttribValue FROM TextAttribs
UNION....
Look up UNION queries to see this in action.
Now, if you REALLY want to get fancy, include a priority for grouping purposes, making all attribute tables have a fourth field. Then when doing the report, you can sort by priority first and attribute name SECOND, so that way you can force your client names to be at the top even if you have attributes with names starting with A or B.