Al utilizar:
Código Delphi
[-]
form2.QuickRep1.OnPreview:=form2.asigna_previo;
form2.QRPreview1.QRPrinter.Print;
Estas tratando de accesar a algo que todavía no se puede accesar, por eso te marca el error; el punto es que todavía no existe la vista previa, pero ya le estas queriendo enviar a imprimir desde una impresora que no existe. Por eso el error.
Segundo: ¿por qué tratas de asignar la impresora? ¿es una especial? ¿existe?

Lo más común para enviar a imprimir es solamente utiliza la propiedad preview de tu reporte, en tu caso:
y solo eso, no es necesario nada más. El sistema se encargará de seleccionar la impresora predeterminada o le dará la opción al usuario de que seleccione la impresora requerida y lo imprima en el momento que desee.
si al utilizar el preview solamente, no te aparece ningún dato, entonces hay que revisar como esta enlazado tu reporte a los datos y si estos se generan correctamente.