EXPORTAR TXT LARGURA FIXA

ALTAIR148 08/02/2011 08:55:26
#364673
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
JOEYRFS 08/02/2011 09:17:04
#364675
é exportar para uma tabela ou importar ?
ALTAIR148 08/02/2011 09:17:55
#364678
Exportar para um arquivo TXT
JOEYRFS 08/02/2011 09:19:41
#364680
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
ALTAIR148 08/02/2011 09:21:06
#364681
Desculpe minha ignorancia, mas não sei nem por onde começar. Poderia montar só o primeiro campo os outros eu adapto.

Muito Obrigado...
JOEYRFS 08/02/2011 09:37:44
#364684
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.
SERGIOPASCOAL 08/02/2011 09:37:49
#364685
Resposta escolhida
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í
ALTAIR148 08/02/2011 14:19:12
#364704
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
ALTAIR148 08/02/2011 18:33:49
#364735
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...
ALTAIR148 09/02/2011 12:00:29
#364821
Alguém?


Obrigado...
MAXCIM 10/02/2011 11:46:12
#364976
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:
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

Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas