Hola
Bueno si sabes trabajar en visual basic 6.0 con el ADODB tambien puedes hacer lo mismo en .NET con el ADODB.NETo si quieres agregas la referencia de ADODB de visual 6 y trabajas con:
dim conexion as adodb.connection
dim recordset as adodb.recordset
conexion= new adodb.connection
conexion="string deconexion"
recordset=new adodb.recordset
recordset="sentencia sql"
recordset.addnew
recordset.fields("campo")=textbox.text
.
.
.
recordset.update
o tambien sepuede hacer con la herramienta que trae visual.net
'CREANDO LA CONEXION CON LA BASE DE DATOS SQL
conexion.ConnectionString = "workstation id=(local);packet size=4096;integrated security=SSPI;data source=(local);persist security info=False;initial catalog=Phuertos"
adapdestino.AcceptChangesDuringFill = True
ABRIENDO PROPIEDADES Y ENLAZANDO LA TABLA
cmddestino.CommandText = "select coddestino,rut,digito,nombre,direccion,fono,ciudad from DESTINO"
cmddestino.Connection = conexion
adapdestino.SelectCommand = cmddestino
'CREANDO COMANDO Y PARAMETROS PARA AGREGAR REGISTROS
insdestino.CommandText = "insert into DESTINO(coddestino, rut, nombre, direccion, fono, ciudad, digito) values('" & tcodigo.Text & "', '" & trut.Text & "', '" & tnombre.Text & "', '" & tdireccion.Text & "', '" & tfono.Text & "', '" & tciudad.Text & "', '" & tdrut.Text & "')"
insdestino.Connection = conexion
conexion.Open()
insdestino.ExecuteNonQuery()
conexion.Close()
Espero que te sirva de algo si te sirve alguna delas dos me avisas a mi correo y te puedo ayudar, yo en visual.net trabajo mas con la segunda forma que te mostre porque la primera la ADODB lautilizo mas en visual 6
Con respecto a lo de crystal report tu puedes elegir en crystal reporte que campos necesitas ocupar con sentecias sql que se ingresan cuando abres la base y eliges la tabla en el crystal que trae visual.net pero yo en especial trabajo mas con PrintDocument.
Saludos y Suerte