FUNCAO REPLACE E SQL

JALEXM 07/08/2012 10:08:47
#407366
Usando VB6/DAO/Access2003.
Criei no Access uma consulta para testar e ela usa a função Replace do Access.
Como funcionou perfeitamente, copiei o código SQL para o programa em VB6.
E agora quando rodo o programa, aparece uma mensagem dizendo [Ô]Função Replace indefinida na expressão[Ô].
Alguém sabe o porque disso?
Obrigado.
VELDRAME 07/08/2012 10:43:19
#407371
No VB 6 é:
Replace (expressão,X,Y)
onde expressão = A frase ou palavra que você quer que seja processada pelo REPLACE.
onde X = Ao que esta procurando
onde Y = Pelo que será substituído.

Caso você tenha mais de um REPLACE a aplicar na mesma expressão pode usar:
replace(replace(expressão,X,Y),X,Y)

Repare que a expressão é passada apenas uma única vez.
JALEXM 07/08/2012 11:10:35
#407382
Citação:

:
No VB 6 é:
Replace (expressão,X,Y)
onde expressão = A frase ou palavra que você quer que seja processada pelo REPLACE.
onde X = Ao que esta procurando
onde Y = Pelo que será substituído.

Caso você tenha mais de um REPLACE a aplicar na mesma expressão pode usar:
replace(replace(expressão,X,Y),X,Y)

Repare que a expressão é passada apenas uma única vez.



Você não leu minha questão corretamente.
Vou repetir: criei uma consulta SQL dentro do Access a qual usa a função Replace. Funciona perfeitamente.
Quando eu copio o texto dessa consulta para uma string dentro do programa em VB6 e executo o programa, obtenho aquela mensagem [Ô]Função Replace indefinida na expressão[Ô].
Exemplo (substitui a letra [Ô]A[Ô] pelo caracter [Ô]_[Ô] nos nomes dos clientes):
SELECT Replace(Nome, [ô]A[ô], [ô]_[ô])
FROM tabClientes
Copiando esse texto para o VB6 e tentando executar, aparece a mensagem de erro.
NETMANIA 07/08/2012 13:51:29
#407409
Qual é a versão do Access que você está usando?
JALEXM 07/08/2012 14:11:55
#407412
Citação:

:
Qual é a versão do Access que você está usando?



Access 2003
VELDRAME 09/08/2012 09:38:14
#407553
Citação:

:
:
No VB 6 é:
Replace (expressão,X,Y)
onde expressão = A frase ou palavra que você quer que seja processada pelo REPLACE.
onde X = Ao que esta procurando
onde Y = Pelo que será substituído.

Caso você tenha mais de um REPLACE a aplicar na mesma expressão pode usar:
replace(replace(expressão,X,Y),X,Y)

Repare que a expressão é passada apenas uma única vez.


Você não leu minha questão corretamente.
Vou repetir: criei uma consulta SQL dentro do Access a qual usa a função Replace. Funciona perfeitamente.
Quando eu copio o texto dessa consulta para uma string dentro do programa em VB6 e executo o programa, obtenho aquela mensagem [Ô]Função Replace indefinida na expressão[Ô].
Exemplo (substitui a letra [Ô]A[Ô] pelo caracter [Ô]_[Ô] nos nomes dos clientes):
SELECT Replace(Nome, [ô]A[ô], [ô]_[ô])
FROM tabClientes
Copiando esse texto para o VB6 e tentando executar, aparece a mensagem de erro.



[Ô]Você não leu minha RESPOSTA corretamente.[Ô]
Se você ver eu escrevi: [Ô]NO VB 6 é (...)[Ô]

Para você fazer o replace que você quer, você precisa do resultado do select.
rs.open [Ô]Select Nome From Tabela where Nome = [ô]Amanda Oliveira[ô][Ô]
replace (rs!Nome,[Ô]A[Ô],[Ô]_[Ô])

Outro detalhe, não sei como você esta fazendo no Access, mas no VB se usa Aspas-Dupla e não Aspa-Simples como você exemplificou.


Para finalizar, você esta dando um replace no NOME da Coluna e não no resultado.
Abraços.
JALEXM 09/08/2012 11:39:32
#407575
Citação:

Se você ver eu escrevi: [Ô]NO VB 6 é (...)[Ô]



Sim, mas eu não queria saber como funcionam as funções Replace, seja no Access, seja no VB6, pois eu já as conheço.
O problema é saber como passar uma string SQL contendo Replace usando o VB6 para que o Access possa executar.

Citação:

Para você fazer o replace que você quer, você precisa do resultado do select.
rs.open [Ô]Select Nome From Tabela where Nome = [ô]Amanda Oliveira[ô][Ô]
replace (rs!Nome,[Ô]A[Ô],[Ô]_[Ô])



Mas eu queria que o Access fizesse isso, não o VB6.

Citação:

Outro detalhe, não sei como você esta fazendo no Access, mas no VB se usa Aspas-Dupla e não Aspa-Simples como você exemplificou.



Você não leu minha mesagem corretamente outra vez. Logo após o exemplo que eu citei, eu escrevi [Ô]Copiando esse texto para o VB6...[Ô], subentende-se que ele esteja no Access, onde aspas simples são permitidas. Mesmo assim, substituindo aspas simples por duplas na string do VB6 o problema permanece.

Citação:

Para finalizar, você esta dando um replace no NOME da Coluna e não no resultado.



Não entendi o que você quis dizer. Se executar no Access aquele simples exemplo que eu citei, verá a letra [Ô]A[Ô] de todos os nomes substituídas por [Ô]_[Ô] numa coluna intitulada Expr1000.
Se quiser que a coluna tenha um nome significativo, poderá usar:
SELECT Replace(Nome, [ô]A[ô], [ô]_[ô]) AS Nomes
FROM tabClientes
Mas o problema continua. Se usar essa string no VB6, obterá aquela mensagem de erro.
Tópico encerrado , respostas não são mais permitidas