There are two main reasons this error is thrown when using the PUSH (dataset) method of getting data to a Crystal Report.
1) The schema of the datatable differs from what the report was designed from.  This can be either a different field name, or a missing field, or in a different order.  The easiest way to debug this is to bind the dataset to a datagrid, and compare the resulting schema to the XSD you used to design the report.  Compare data types, column names, etc. 
2) The name of the data table is incorrect.  When you designed your report from an XSD, the report saved the name of the data table(s) that were in your dataset.  When you filled your dataset, you probably forgot to specify the name of the data table.  If you're using a DataAdapter, your command should be:
MyAdapter.Fill(MyDataSet, "MyTableName")
Check your XSD and compare the table name in the XSD with what you are setting in your Fill command.  To check the table name, open your XSD and look at the column headers for your data table.  That's the table name (unless you've manually been tinkering with the XSD, and then you're on your own).