Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Suposta duplicidade em select
Message
 
To
20/01/2003 15:00:59
Cleber Ferrari
Capta Tecnologia
Brazil
General information
Forum:
Visual FoxPro
Category:
Other
Miscellaneous
Thread ID:
00743542
Message ID:
00743825
Views:
8
Fala Cleber!

Este é um comportamento "Normal" do VFP; quer dizer, normal não é, mas funciona assim ;)

Veja só: considere o exemplo abaixo, que deve ser parecido com o seu:
CREATE CURSOR Clientes (ID Integer, Nome Char(30))

INSERT INTO Clientes VALUES (1, "Fabio")
INSERT INTO Clientes VALUES (2, "Monteiro")
INSERT INTO Clientes VALUES (3, "Vazquez")

SELECT *, MESSAGEBOX(Nome) FROM Clientes INTO CURSOR curResult

BROWSE
Se você executar este exemplo, verá que a linha cujo campo Nome tem o valor "Fabio" é apresentada duas vezes e as demais uma só vez. Até aí nenhuma novidade...

Agora, na seqüencia, execute o seguinte:
SELECT *, MESSAGEBOX(Nome) ;
  FROM Clientes ;
  WHERE Nome <> "Fabio" ;
  INTO CURSOR curResult

BROWSE
Veja que a condição do SELECT exclui o registro de Nome "Fabio", mas mesmo assim o MESSAGEBOX() o mostra! Mas veja também que no BROWSE verifica-se que a linha "Fabio" foi realmente excluída; ou seja, o SELECT funcionou de verdade!

A explicação para tudo isso é que, para avaliar o tamanho das colunas do SELECT, o engine do VFP fará uma consulta ao primeiro registro físico da tabela e isso fatalmente executará a função MESSAGEBOX(). Isto não significa, entretando, que aquele registro apresentado pelo primeiro MESSAGEBOX() será DE FATO incluído no cursor resultante.

Sei que é meio confuso, mas copnseguiu compreender a idéia?

Um grande abraço!
-----
Fabio Vazquez
http://www.fabiovazquez.com
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform