'A idéia desta rotina é juntar conforme vc deseja, mesmo que não haja
'correpondencia entre os registros. Este tipo de rotina era o que se usava quando
'programavávamos no velho cobol e o nosso banco de dados ainda era em fita magnética, rsrsrs.
'No caso, vamos ler arquivo1 e arquivo2 e gravando o arquivo3.
'Obs: se Arq1 ou Arq2 estiverem fora de ordem a rotina pode não funcionar.
' Também montei aqui sem testar, o resto agora é contigo.
Type Registro1
cdReg1 As String * 4
nmPessoa As String * 40
resto1 As String * 2
End Type
Type Registro2
cdReg2 As String * 4
nmEspacos As String * 10
nrPessoa As String * 8
resto2 As String * 2
End Type
Type Registro3
cdReg3 As String * 4
nmPessoa As String * 40
nrPessoa As String * 8
resto3 As String * 2
End Type
Public Reg1 As Registro1
Public Reg2 As Registro2
Public Reg3 As Registro3
Private sub form_Load() 'ou em outro local qualquer do form
dim wCont as integer
Open "c:Arquivo1.txt" For Input As 1
Open "c:Arquivo2.txt" For Input As 1
Open "c:Arquivo3.txt" For Random As 1 Len = Len(Reg3)
call leArq1
call leArq2
Do Until EOF(1) and EOF(2)
if reg1.cdReg1 = reg2.cdreg2 then
wcont = wcont + 1
reg3.cdreg3 = reg1.cdreg1
reg3.nmPessoa = reg1.nmPessoa
reg3.nrPessoa = reg2.nrPessoa
reg3.resto3 = vbcrlf
Put #3, wCont, Reg3
call leArq1
call leArq2
elseif reg1.cdreg1 < reg2.cdreg2 then
wcont = wcont + 1
reg3.cdreg3 = reg1.cdreg1
reg3.nmPessoa = reg1.nmPessoa
reg3.nrPessoa = ""
reg3.resto3 = vbcrlf
Put #3, wCont, Reg3
call leArq1
else 'reg1.cdreg1 > reg2.cdreg2
wcont = wcont + 1
reg3.cdreg3 = reg2.cdReg2
reg3.nmPessoa = ""
reg3.nrPessoa = reg2.cdReg2
reg3.resto3 = vbcrlf
Put #3, wCont, Reg3
call leArq2
endif
Loop
Close #1
close #2
Close #3
End sub
Private sub LeArq1()
Line Input #1, wReg1
if Eof(1) then
reg1.cdReg1 = 9999
endif
End Sub
Private sub LeArq2()
Line Input #2, wReg2
if Eof(2) then
reg2.cdReg2 = 9999
endif
End Sub