Buenas.
El problema creo que lo tienes en la consulta del INSERT. Dentro del VALUES, estás poniendo los valores a grabar, mediante subconsultas. Deberías poner esos valores directamente, sin consultas. De hecho, eso que haces es algo que no entiendo, ya que algunos de esos valores ya los has obtenido previamente y están asignados a las variables id_emp, id_cli.
Aparentemente estás utilizando variables, dataadapters y datasets sin obtener beneficio de ello, al contrario.

Otra cosa que no entiendo (igual me precipito) es el hecho de que tengas en diferentes combos los nombres y apellidos de clientes/empleados. ¿Por qué no meterlos en un mismo combo?
Una recurso que te vendría (creo) muy bien, sería el uso de la propiedad "itemdata" de los combos (si usas VB6, sabrás de qué hablo). Con ello conseguirías, al momento de cargar los nombres y apellidos, poder también cargar los respectivos id, de modo que luego no tendrías que utilizar dataadapters y datasets adicionales para saber esos valores.
El problema es que esa propiedad no está presente en .NET, pero podrias implementarla de esta manera:
http://support.microsoft.com/kb/311340Bueno, espero que esta miniparrafada te sirva de ayuda

.
Saludos.