vou colocar o meu codigo pra q vc possa entender melhor o q eu to dizendo:
'Apaga se tem Algo no Banco
If Not DtTB_DADOS.Recordset.EOF And Not DtTB_DADOS.Recordset.BOF Then
DtTB_DADOS.Database.Execute "DELETE * FROM TB_DADOS"
End If
'Grava na TB_DADOS
For i = 0 To 9
If TxtLj_Cod(i).Text <> "" Then
DtTB_DADOS.Recordset.AddNew
DtTB_DADOS.Recordset.Fields("REF") = LojaEtq & TxtLj_Cod(i).Text
DtTB_DADOS.Recordset.Fields("COR") = TxtCor(i).Text
DtTB_DADOS.Recordset.Fields("TAM") = TxtTam(i).Text
DtTB_DADOS.Recordset.Update
End If
Next
DtTB_DADOS.DatabaseName = App.Path & "Etiquetas.mdb"
DtTB_DADOS.RecordSource = "TB_DADOS"
DtTB_DADOS.Refresh
'PASSAR PARA TB_ETQ NO FORMATO NECESSARIO
If DtTB_DADOS.Recordset.EOF And DtTB_DADOS.Recordset.BOF Then
MsgBox "O arquivo está vazio!", vbOKOnly + vbExclamation, "Imprime Etiquetas"
Exit Sub
End If
DtTB_DADOS.Recordset.MoveMin
While Not DtTB_DADOS.Recordset.EOF
RefAux = DtTB_DADOS.Recordset.Fields("REF")
CorAux = DtTB_DADOS.Recordset.Fields("COR")
TamAux = DtTB_DADOS.Recordset.Fields("TAM")
Contador = Contador + 1
ReDim Preserve Ref(1 To Contador)
ReDim Preserve Cor(1 To Contador)
ReDim Preserve Tam(1 To Contador)
Ref(Contador) = RefAux
Cor(Contador) = CorAux
Tam(Contador) = TamAux
DtTB_DADOS.Recordset.MoveNext
Wend
DtTB_DADOS.Recordset.Close
If Contador = 0 Then Exit Sub
ReDim Preserve R(1 To Contador)
ReDim Preserve C(1 To Contador)
ReDim Preserve T(1 To Contador)
For f = 1 To Contador
R(f) = Ref(f)
If Len(R(f)) < 10 Then
R(f) = R(f) + Space(10 - Len(R(f)))
End If
C(f) = Cor1 + Cor(f)
If Len(C(f)) < 10 Then
C(f) = C(f) + Space(10 - Len(C(f)))
End If
T(f) = Cor2 + Tam(f)
If Len(T(f)) < 10 Then
T(f) = T(f) + Space(10 - Len(T(f)))
End If
Next
LinhaAux = 0
Registro = 1
'Monta Linhas
For f = 1 To Int(Contador / 5) + 1
If (Contador - Registro) >= 5 Then
LinhaAux = LinhaAux + 3
ReDim Preserve Linha(1 To LinhaAux)
For i = 1 To 5
Linha(LinhaAux - 2) = Linha(LinhaAux - 2) & Space(Espaco(i)) & R(Registro)
Linha(LinhaAux - 1) = Linha(LinhaAux - 1) & Space(Espaco(i)) & C(Registro)
Linha(LinhaAux) = Linha(LinhaAux) & Space(Espaco(i)) & T(Registro)
Registro = Registro + 1
Next
Else
LinhaAux = LinhaAux + 3
ReDim Preserve Linha(1 To LinhaAux)
For i = 1 To (Contador - Registro) + 1
Linha(LinhaAux - 2) = Linha(LinhaAux - 2) & Space(Espaco(i)) & R(Registro)
Linha(LinhaAux - 1) = Linha(LinhaAux - 1) & Space(Espaco(i)) & C(Registro)
Linha(LinhaAux) = Linha(LinhaAux) & Space(Espaco(i)) & T(Registro)
Registro = Registro + 1
Next
End If
Next
DtTB_ETQ.DatabaseName = App.Path & "Etiquetas.mdb"
DtTB_ETQ.RecordSource = "TB_ETQ"
DtTB_ETQ.Refresh
If Not DtTB_ETQ.Recordset.EOF And Not DtTB_ETQ.Recordset.BOF Then
DtTB_ETQ.Database.Execute "DELETE * FROM TB_ETQ"
End If
For f = 1 To LinhaAux Step 3
DtTB_ETQ.Recordset.AddNew
DtTB_ETQ.Recordset.Fields("LINHA1") = Linha(f)
DtTB_ETQ.Recordset.Fields("LINHA2") = Linha(f + 1)
DtTB_ETQ.Recordset.Fields("LINHA3") = Linha(f + 2)
DtTB_ETQ.Recordset.Update
Next
DtTB_ETQ.Recordset.Close
'Chama Crystal Reports
RptETQ.Destination = 0
RptETQ.ReportFileName = App.Path & "Etiquetas.RPT"
RptETQ.DataFiles(0) = App.Path & "Etiquetas.mdb"
RptETQ.WindowTitle = "Impressão de Etiquetas"
RptETQ.WindowTop = 0: RptETQ.WindowLeft = 0
RptETQ.WindowHeight = Screen.Height / 15.4
RptETQ.WindowWidth = Screen.Width / 15
RptETQ.Action = 1
esse é um programa para impressão de etiquetas numa impressora matricial.
Ewerton Moreira.