DADOS CURRENCY SEM PONTO

ARES 22/03/2011 17:47:55
#368821
Amigos, boa tarde!

Estou fazendo um importação do mysql para txt e no campo moeda em preciso que ele seja repassado para o .txt sem o ponto.

ex.:
no myrs (vvalortotal double(10,2)) = 348.21

quando eu envio para o .txt ele repassa o seguinte valor: 34800

segue o código que estou usando para importar:

Private Sub enviarpedido()
Dim i As Long
Dim myrs1 As New ADODB.Recordset
[ô]On Error Resume Next

Open [Ô]C:\asgard\import\099.dpv[Ô] For Append As #1

mycon.Open [Ô]dsn=asgard_salles[Ô]



With mycmd
Set .ActiveConnection = mycon
.CommandType = adCmdText
.CommandText = [Ô] select pedido_front.tipo, pedido_front.numeropedido, pedido_front.data_pedido, pedido_front.data_entrega, pedido_front.turno, pedido_front.cliente, pedido_front.prazo, pedido_front.tabela, pedido_front.forma_pgto, pedido_front.condicao_pgto, pedido_front.desconto, pedido_front.vvalor, pedido_front.vvalor_tabela, pedido_front.itens, pedido_front.obs, pedido_front.opc_especial, pedido_front.prazo_especial, pedido_front.representante, pedido_front.representante_fat from pedido_front where pedido_front.enviado = 0 [Ô]
Set myrs = .Execute

Print #1, Left([Ô]AsgardSeller[Ô] & Space(13), 13)

Do Until myrs.EOF

Print #1, Left(myrs!tipo & Space(1), 1) & Left(Format(myrs!numeropedido, [Ô]000000[Ô]) & Space(6), 6) & Left(Format(myrs!data_pedido, [Ô]dd/mm/yyyy[Ô]) & Space(10), 10) & Left(Format(myrs!data_entrega, [Ô]dd/mm/yyyy[Ô]) & Space(10), 10) & Left(myrs!turno & Space(1), 1) & [Ô][Ô] & Left(Format(myrs!cliente, [Ô]0000000000[Ô]) & Space(10), 10) & Left(231 & Space(3), 3) & Left(Format(myrs!tabela, [Ô]00000[Ô]) & Space(5), 5) & Left(myrs!forma_pgto & Space(10), 10) & Left(Format(myrs!prazo, [Ô]000[Ô]) & Space(10), 10) & Left(Format(myrs!desconto, [Ô]0000000000[Ô]) & Space(10), 10) & Left(Format(myrs!vvalor, [Ô]0000000000[Ô]) & Space(10), 10) & Left(Format(myrs!vvalor_tabela, [Ô]0000000000[Ô]) & Space(10), 10) & Left(Format(myrs!itens, [Ô]000[Ô]) & Space(3), 3) & Left(myrs!obs & Space(60), 60) & Left(myrs!opc_especial & Space(1), 1) & Left(Format(myrs!prazo_especial, [Ô]000[Ô]) & Space(3), 3) & Left(myrs!representante & Space(5), 5) & Left(Format(myrs!representante_fat, [Ô]00000[Ô]) & Space(5), 5) & Left(Format(myrs!numeropedido, [Ô]0000000000[Ô]) & Space(10), 10) & [Ô][Ô]

.CommandText = [Ô]select pedido_end.tipo, pedido_end.pedido, pedido_end.produto, pedido_end.qtde, pedido_end.vvalor_venda, pedido_end.vvalor_tabela, pedido_end.desconto, pedido_end.preco_minimo, pedido_end.oferta, pedido_end.credito, pedido_end.numero_pedido from pedido_end where pedido_end.numero_pedido = [Ô] & Val(myrs!numeropedido) & [Ô][Ô]
Set myrs1 = .Execute

Do Until myrs1.EOF

Print #1, Left(myrs1!tipo & Space(1), 1) & Left(Format(myrs1!numero_pedido, [Ô]000000[Ô]) & Space(6), 6) & Left(Format(myrs1!produto, [Ô]000000000000000[Ô]) & Space(15), 15) & Left(Format(myrs1!qtde, [Ô]0000000000[Ô]) & Space(10), 10) & Left(Format(myrs1!vvalor_venda, [Ô]0000000000[Ô]) & Space(10), 10) & Left(Format(myrs1!vvalor_venda, [Ô]0000000000[Ô]) & Space(10), 10) & Left(Format(myrs1!desconto, [Ô]0000000000[Ô]) & Space(10), 10) & Left(myrs1!preco_minimo & Space(1), 1) & Left(oferta & Space(1), 1) & Left(Format(myrs1!credito, [Ô]0000000000[Ô]) & Space(10), 10) & Left(Format(myrs1!numero_pedido, [Ô]0000000000[Ô]) & Space(10), 10) & [Ô][Ô]

myrs1.MoveNext

Loop

myrs.MoveNext

Loop

Close #1

End With

Set mycmd = Nothing
Set myrs = Nothing
Set myrs1 = Nothing
mycon.Close

MsgBox [Ô]Arquivos gerados com sucesso![Ô], vbInformation, [Ô]Projeto Zeus[Ô]
[ô]bloquear
End Sub

----------

Nesse ponto que preciso que repasse o valor sem o ponto: (Format(myrs1!vvalor_venda, [Ô]0000000000[Ô]) , para que retorne assim: 348.21 = 34821.

O objetivo desse formato é para abastecer um programa de terceiros em cobol, onde os dados devem ser informados para ele com o seguinte paramentro:

AsgardSeller
100000122/03/201122/03/2011 000000781823100000 014 000000000000000006990000000699002uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 000201 000000000000001
200000100000000033303000000000010000000054000000005400000000000 00000000000000000001
20000010000000003330300000000012000000[txt-color=#e80000]0000000054[/txt-color]00000000000 00000000000000000001
100000222/03/201122/03/2011 000000204823100000 000 000000000000000000000000000000000 000201 000000000000002
200000200000000033303000000000010000000054000000005400000000000 00000000000000000002
200000200000000033303000000000010000000054000000005400000000000 00000000000000000002
100000322/03/201122/03/2011 000000458323100000 000 000000000000000000000000000000000 000201 000000000000003
200000300000000033303000000000100000000054000000005400000000000 00000000000000000003
200000300000000033303000000000010000000054000000005400000000000 00000000000000000003
100000422/03/201122/03/2011 000000204823100000 015 000000000000000005920000000592002ASDASKDJASKDJASKLDJSAKDJASKLDJSKDJADJKASJDLSJKDSAJDKLASDJKAS 000201 000000000000004
200000400000000033303000000000010000000054000000005400000000000 00000000000000000004
200000400000000033303000000000100000000054000000005400000000000 00000000000000000004
100000522/03/201122/03/2011 000000204823100000 014 000000000000000001080000000108002c 000201 000000000000005
200000500000000033303000000000010000000054000000005400000000000 00000000000000000005
200000500000000033303000000000010000000054000000005400000000000 00000000000000000005

onde deveria ser 0000005385

alguem sabe como tranformar o double(10,2) em números sem sinal?

Att
JOEYRFS 22/03/2011 17:54:06
#368822
Replace(texto,[ô].[ô],[ô][ô])
ARES 22/03/2011 18:04:31
#368823
Amigo, obrigado pela ajuda!

Quanto a salvar os dados no mysql o processo esta tranquilo:

replace(vvalor, [Ô],[Ô],[Ô].[Ô])

A questão é extrair do mysql e enviar para o .txt com o seguinte formato:

no mysql: 53.80
no txt: 0000005380

Você teria uma outra solução?

Att.
TECLA 22/03/2011 18:12:05
#368824
msgbox format([Ô]53.80[Ô], [Ô]0000000000[Ô])
JOEYRFS 22/03/2011 18:14:11
#368825
seu campo tem quantos caracteres ?

Por exemplo são 10 caracteres o total.

STRING(10 - LEN(CAMPO),[Ô]0[Ô] ) & CAMPO;

E AINDA USAR O REPLACE NO CAMPO.
ARES 22/03/2011 18:41:50
#368830
Amigo,

Desculpe-me mas não entendi.
TECLA 22/03/2011 20:02:05
#368832
Citação:

:
msgbox format([Ô]53.80[Ô], [Ô]0000000000[Ô])



Não entendeu o FORMAT?
ARES 23/03/2011 08:55:27
#368871
Tecla, obrigado pela resposta!

Quanto ao format ou ao replace esta tranquilo, não há dúvidas.
Entretanto, nesse caso, da forma que estou tentando não esta funcionado, veja:

Left(Format([Ô]myrs1!vvalor_venda[Ô], [Ô]0000000000[Ô]) & Space(10), 10) &

e está me retornando da seguinte forma:

100000122/03/201122/03/2011 000000781823100000 014 000000000000000006990000000699002uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 000201 000000000000001
20000010000000003330300000000001[txt-color=#e80000]myrs1!vvalmyrs1!vval[/txt-color]00000000000 00000000000000000001
20000010000000003330300000000012[txt-color=#e80000]myrs1!vvalmyrs1!vval[/txt-color]00000000000 00000000000000000001

Já tentei com CCur com CDbl e não chego no valor que preciso: 0000005381

Esses valores são de pedidos realizados pelos representantes e encaminhados via ftp para o servidor, portanto, o valor estará sempre mudando.

Desde já agradeço.
MARCELO.TREZE 23/03/2011 09:37:18
#368872
Resposta escolhida
bom não sei se estou errado mas primeiro no seu printer imprime duas vezes o mesmo valor, isto está certo?

...& Left(Format(myrs1!vvalor_venda, [Ô]0000000000[Ô]) & Space(10), 10) & Left(Format(myrs1!vvalor_venda, [Ô]0000000000[Ô]) & Space(10), 10)

ai pior ainda é quando vc le 10 caracteres da direita pra esquerda (Left), porém neste vc coloca 10 espaços,(Space(10), quando vc pode apenas colocar o format sem o Left e Space.

Format(myrs1!vvalor_venda, [Ô]0000000000[Ô])

quanto ao uso do replace, se o valor estiver vindo do banco com o valor fracionado, e este for do tipo currency provavelmente ele não virá com ponto e sim com virgula.

então vc pode tentar o seguinte:

Format(Replace(myrs1!vvalor_venda,[Ô],[Ô],[Ô][Ô]), [Ô]0000000000[Ô])


2 a. opção

Format(Replace(CDbl(myrs1!vvalor_venda),[Ô],[Ô],[Ô][Ô]), [Ô]0000000000[Ô])


ou

Format(Replace(Replace(CDbl(myrs1!vvalor_venda),[Ô],[Ô],[Ô][Ô]),[Ô].[Ô],[Ô][Ô]), [Ô]0000000000[Ô])


um dos tres formatos acima deve funcionar, isso se o myrs1!vvalor_venda estiver trazendo valor correto da tabela.

JOEYRFS 23/03/2011 11:21:26
#368884
Tira o ponto com o Replace(campo,[Ô].[Ô],[Ô][Ô])

Depois veja quantos caracteres vc precisa no txt. ( ex. 10 )

Depois conta quanto tem seu campo com o Len(campo)

Depois utiliza o String para acrescentar os 0 a esquerda..

CampoTXT = String(10 - Len(Replace$(Valor, [Ô].[Ô], [Ô][Ô])), [Ô]0[Ô]) & Replace$(Valor, [Ô].[Ô], [Ô][Ô])
Tópico encerrado , respostas não são mais permitidas