In response to your first question, you don't have to define the datatype for each value you're inserting, but you do need to be sure that the data you're passing to a specific column is compatable with that column's dataype.
Next, If you have 50 tables that all have different structures you can create 50 wrappers that go around the Insert Data function and formats the input data for one specific table. (Not my immediate choice.)
Alternately, you can go straight to SQL and create a table of your own containing 50 insert statements--each for a specific table. To make an insert you would first fetch the appropriate insert statement from your table in the database, populate the data into the statement, and execute the modified statement.
Mike...