A have_rows()
loop will display empty rows unless you check to see if every sub field has a value first. In a normal loop it would be something like
if (get_sub_field('field1') && get_sub_field('field2') /* && etc... */) {
// all field have content, output content
}