Using a BAQ works great. Thank you 
Here my code:
if(e10 would know this is code i would not have to do this ){
// ** Place Event Handling Code Here **
DynamicQueryAdapter dqa = new DynamicQueryAdapter(oTrans);
dqa.BOConnect();
QueryExecutionDataSet qeds = dqa.GetQueryExecutionParametersByID("serno_contact");
qeds.ExecutionParameter.Clear();
qeds.ExecutionParameter.AddExecutionParameterRow("ParPerConID", txtPerConID_c.Text, "int", false, Guid.NewGuid(), "A");
dqa.ExecuteByID("serno_contact", qeds);
if(dqa.QueryResults.Tables["Results"].Rows.Count == 0){
MessageBox.Show("Unable to find Contact");
txtPerConID_c.Text = "0";
txtName_c.Text = "";
}
foreach(DataRow row in dqa.QueryResults.Tables["Results"].Rows){
if(txtName_c.Text != row["PerCon_Name"].ToString()){
MessageBox.Show("ContactID does no fit to the Contact name. Updating Contact name now! ");
EpiDataView edvSerialNo = ((EpiDataView)(this.oTrans.EpiDataViews["SerialNo"]));
System.Data.DataRow edvSerialNoRow = edvSerialNo.CurrentDataRow;
if ((edvSerialNoRow != null)){
edvSerialNoRow.BeginEdit();
edvSerialNoRow["Name_c"] = row["PerCon_Name"];
edvSerialNoRow.EndEdit();
}
}
}
}