EXPORTAR TXT LARGURA FIXA
Bom dia,
Preciso exportar dados de uma tabela com largura fixa conforme o layout abaixo:
Referência do campo Posição Tamanho Tipo Conteúdo
1 001-009 9 numérico Seqüencial do registro no arquivo.
2 010-010 1 numérico Tipo do registro, [Ô]1[Ô].
3 011-011 1 numérico o empregador, [Ô]1[Ô] para CNPJ ou [Ô]2[Ô] para CPF.
4 012-025 14 numérico CNPJ ou CPF do empregador.
5 026-037 12 numérico CEI do empregador, quando existir.
Obrigado
Preciso exportar dados de uma tabela com largura fixa conforme o layout abaixo:
Referência do campo Posição Tamanho Tipo Conteúdo
1 001-009 9 numérico Seqüencial do registro no arquivo.
2 010-010 1 numérico Tipo do registro, [Ô]1[Ô].
3 011-011 1 numérico o empregador, [Ô]1[Ô] para CNPJ ou [Ô]2[Ô] para CPF.
4 012-025 14 numérico CNPJ ou CPF do empregador.
5 026-037 12 numérico CEI do empregador, quando existir.
Obrigado
é exportar para uma tabela ou importar ?
Exportar para um arquivo TXT
Bom dia.
é simples, você só precisa do layout em mãos e o uso dos
String([Ô]qtde de caracteres[Ô], [Ô]qual caractere[Ô])
e o
Space([Ô]Qtde de espaços[Ô])
Assim você vai conseguir montar o seu txt
é simples, você só precisa do layout em mãos e o uso dos
String([Ô]qtde de caracteres[Ô], [Ô]qual caractere[Ô])
e o
Space([Ô]Qtde de espaços[Ô])
Assim você vai conseguir montar o seu txt
Desculpe minha ignorancia, mas não sei nem por onde começar. Poderia montar só o primeiro campo os outros eu adapto.
Muito Obrigado...
Muito Obrigado...
O ideal seria vc ter o layout.. porem.. a tabela acima que vc colocou não está com largura fixa.
Cada linha está com uma especificação.
Mas vamos pela primeira linha.
O layout da primeira linha seria
Campo + 38 espaços + campo + 8 espaços + campo + 14 espaços + campo + 4 espaços + campo
Conteudo = conteudo & campo([Ô]Referencia[Ô])
Conteudo = conteudo & Space(38)
Conteudo = conteudo & campo([Ô]Posição[Ô])
Conteudo = conteudo & Space(8)
Conteudo = conteudo & campo([Ô]Tamanho[Ô])
Conteudo = conteudo & Space(14)
Conteudo = conteudo & campo([Ô]Tipo[Ô])
Conteudo = conteudo & Space(4)
Conteudo = conteudo & campo([Ô]Conteúdo[Ô]) & vbCrLf
Com isso vc tem a primeira linha montada.. se for esse o layout fixo, é só montar um loop e fazer as outras linhas.
Cada linha está com uma especificação.
Mas vamos pela primeira linha.
O layout da primeira linha seria
Campo + 38 espaços + campo + 8 espaços + campo + 14 espaços + campo + 4 espaços + campo
Conteudo = conteudo & campo([Ô]Referencia[Ô])
Conteudo = conteudo & Space(38)
Conteudo = conteudo & campo([Ô]Posição[Ô])
Conteudo = conteudo & Space(8)
Conteudo = conteudo & campo([Ô]Tamanho[Ô])
Conteudo = conteudo & Space(14)
Conteudo = conteudo & campo([Ô]Tipo[Ô])
Conteudo = conteudo & Space(4)
Conteudo = conteudo & campo([Ô]Conteúdo[Ô]) & vbCrLf
Com isso vc tem a primeira linha montada.. se for esse o layout fixo, é só montar um loop e fazer as outras linhas.
define na string, exemplo:
dim vReferencia as string * 10 [ô]aqui a variável vReferencia tem um tamanho fixo de 10
dim vNome as string * 40 [ô]aqui 40
então fica assim
vReferencia = txtRef.text
vNome = vNome.text
depois vc junta
vReferencia & vNome
entendeu? qualquer coisa poste aÃ
dim vReferencia as string * 10 [ô]aqui a variável vReferencia tem um tamanho fixo de 10
dim vNome as string * 40 [ô]aqui 40
então fica assim
vReferencia = txtRef.text
vNome = vNome.text
depois vc junta
vReferencia & vNome
entendeu? qualquer coisa poste aÃ
Ex: tenho a tabela [Ô]horas_trabalhadas[Ô] como que faço para pegar os dados dela?
por exemplo como que pego o valor do campo:
Entrada1
Saida1
Entrada2
Saida2
Obrigado
por exemplo como que pego o valor do campo:
Entrada1
Saida1
Entrada2
Saida2
Obrigado
Consegui fazer da seguinte forma abaixo, outra dúvida que eu preciso é a seguinte, tenho duas tabelas, [Ô]entrada_fucionarios[Ô] e [Ô]cad_empresa[Ô]. Eu quero que no cabeçalho ele pegue o nome da empresa e no restante ele pegue os dados da tabela entrada_funcionarios.
Dim Sai As String
dim vnome as string * 10
dim vEmpresa as string * 10
Set DB = CurrentDb
strSQL = [Ô]SELECT empresa from cad_empresa
Set RSP = DB.OpenRecordset(strSQL)
strSQL = Application.CurrentProject.path
Open strSQL & [Ô]\Teste.txt[Ô] For Output As #1
Print #1, Sai
With RSP
.MoveFirst
Do While Not .EOF
vEmpresa = (RSP!empresa)
Sai = vempresa
CtaItens = CtaItens + 1
Print #1, Sai
.MoveNext
Loop
End With
MsgBox [Ô]Exportado com Sucesso, verifique junto ao banco...[Ô]
Set DB = Nothing
Set RSP = Nothing
Close #1
Exit Sub
End Sub
Obrigado...
Dim Sai As String
dim vnome as string * 10
dim vEmpresa as string * 10
Set DB = CurrentDb
strSQL = [Ô]SELECT empresa from cad_empresa
Set RSP = DB.OpenRecordset(strSQL)
strSQL = Application.CurrentProject.path
Open strSQL & [Ô]\Teste.txt[Ô] For Output As #1
Print #1, Sai
With RSP
.MoveFirst
Do While Not .EOF
vEmpresa = (RSP!empresa)
Sai = vempresa
CtaItens = CtaItens + 1
Print #1, Sai
.MoveNext
Loop
End With
MsgBox [Ô]Exportado com Sucesso, verifique junto ao banco...[Ô]
Set DB = Nothing
Set RSP = Nothing
Close #1
Exit Sub
End Sub
Obrigado...
Alguém?
Obrigado...
Obrigado...
to passando um perrengue com isso tbm!
O Jonathan, aqui do site me passou essa dica de pegar o textwidth do texto e assim temos o tamanho exato da string ( independente do numeros de caarcteres).
funciona perfeitamente, porem é demorado pra rodar... no seu caso se forem poucos dados vai beleza. já eu continuo na luta procurando uma solução.
Function TextWidth(ByVal s As String) As Integer
Dim g As Graphics
Dim p As New Printing.PrintDocument
Dim f As New Font([Ô]arial[Ô], 12, FontStyle.Regular, GraphicsUnit.Point, 0)
g = p.PrinterSettings.CreateMeasurementGraphics
g.PageUnit = GraphicsUnit.Inch
TextWidth = g.MeasureString(s, f).Width
g.Dispose()
f.Dispose()
End Function
Fonte.: VB6 to VB.Net Migration of Print TextWidth
para usar:
O Jonathan, aqui do site me passou essa dica de pegar o textwidth do texto e assim temos o tamanho exato da string ( independente do numeros de caarcteres).
funciona perfeitamente, porem é demorado pra rodar... no seu caso se forem poucos dados vai beleza. já eu continuo na luta procurando uma solução.
Function TextWidth(ByVal s As String) As Integer
Dim g As Graphics
Dim p As New Printing.PrintDocument
Dim f As New Font([Ô]arial[Ô], 12, FontStyle.Regular, GraphicsUnit.Point, 0)
g = p.PrinterSettings.CreateMeasurementGraphics
g.PageUnit = GraphicsUnit.Inch
TextWidth = g.MeasureString(s, f).Width
g.Dispose()
f.Dispose()
End Function
Fonte.: VB6 to VB.Net Migration of Print TextWidth
para usar:
Citação:Public Function ajusta_testo(ByVal strTesto As String, ByVal tamanho As Long, ByVal Lado As String) As String
w = TextWidth(strTesto)/45
Vspace = (tamanho - w)
If Vspace < 0 Then Vspace = 0
If Lado = [Ô]D[Ô] Then
MText = Space(Vspace) & strTesto
ElseIf Lado = [Ô]E[Ô] Then
[ô]Mtext = strTesto & Espaco
MText = strTesto & Space(Vspace)
End If
Return MText
End Function
Tópico encerrado , respostas não são mais permitidas