Diferença entre a função$ () esquerda e $ () esquerda no acesso

Estou a tentar depurar uma pergunta quebrada. A pesquisa usa Esquerda$([blahblah],4) em vez de esquerda([blahblah],4).

Qual é a diferença entre as funções esquerda() e esquerda$() em Microsoft Access?

Author: Adarsh Madrecha, 2016-06-18

2 answers

O final $ é um carácter de declaração de tipo para o tipo de dados String em VBA.

O resultado devolvido de$ () à esquerda é um texto, enquanto que o esquerda () devolve um Variante.

Você deve usar esquerda(), não esquerda$() se houver alguma chance de valores nulos, uma vez que a variante pode ser nula, mas a String não pode. Para demonstrar que:

  1. Carregue em Ctrl+G para abrir a janela Imeditada.

  2. Enter: ? Esquerda (Null,1) A resposta é nula.

  3. Agora. introduzir: ? Esquerda$(Null, 1) Isto gera erro 94. Uma vez que o resultado deve ser nulo, e a String não pode ser nulo, você recebe o erro, "uso Inválido de nulo".

Se estiver a lidar com valores de texto, no código VBA,$ () da esquerda será ligeiramente mais eficiente, uma vez que evita a sobrecarga / ineficiência associada ao Variante. No entanto, se houver qualquer hipótese de Nulls estar envolvido, use Esquerda (), ou então lidar explicitamente com o nulo com algo como Nz ().

O$() à esquerda irá devolver um texto ou gerar um erro se passar o NULL

À esquerda() irá devolver um texto ou nulo se for ultrapassado

Mais informação sobre Nulls: http://allenbrowne.com/casu-11.html

 4
Author: Adarsh Madrecha, 2016-06-18 17:38:43

A única diferença é que Left Aceita Null enquanto Left$ não aceita.

Se passou um texto, Ambos devolvem um texto. VarType: vbString

Se for inválido, Left devolve um valor nulo. VarType: vbNull

Ambos correm à mesma velocidade, cerca de 12 milhões. iterations pr. em segundo lugar, portanto, sem importância. Na verdade, se muitas amostras são registradas, a esquerda em média é uma fração mais rápida do que a esquerda$.

Então, para abreviar: Use $ Left se você deseja aumentar um erro em um valor de parâmetro de nulo, caso contrário, Salve sua digitação.

 2
Author: Gustav, 2016-06-20 16:06:52