Verificar se existe um campo
Moderador: Moderadores
Verificar se existe um campo
durante a impressão, tenho que verificar se no arquivo existe um determinado campo
if ......='nome' (campo nome)
....
else
.....
endif
alguém sabe como faço esta pergunta?
Muito obrigado a todos pela atenção
if ......='nome' (campo nome)
....
else
.....
endif
alguém sabe como faço esta pergunta?
Muito obrigado a todos pela atenção
- Augusto
- Usuário Nível 3

- Mensagens: 473
- Registrado em: 26 Ago 2003 17:50
- Localização: Maricá/RJ
- Contato:
Parceiro... (somente a título de ajuda)
A minha experiência me diz que o seu problema não está em achar uma função, rotina ou seja lá o que for para resolver sua questão...
Ela me diz que vc está equivocado na estrutura "lógica" que está usando para manipular sua base de dados...
O que me intriga é que, conforme vc mesmo diz...
Não faz sentido... Como vc pode ter essa dúvida ??
Vc não sabe a estrutura da tabela DBF que está usando ??
Não sabe que campos a compõe ??
Do contrário, ainda que simples, sua dúvida não seria talvez...
Como saber se um determinado campo está preenchido ou não ??
Ou ainda...
Como saber se um determinado campo tem um determinado conteúdo ou outro ??
Talvez seja mais interessante vc rever a estrutura da sua base de dados na sua composição. Desta forma, talvez vc consiga diminuir e, ao mesmo tempo, otimizar a sua utilização/acesso...
A minha experiência me diz que o seu problema não está em achar uma função, rotina ou seja lá o que for para resolver sua questão...
Ela me diz que vc está equivocado na estrutura "lógica" que está usando para manipular sua base de dados...
O que me intriga é que, conforme vc mesmo diz...
durante a impressão, tenho que verificar se no arquivo existe um determinado campo
Não faz sentido... Como vc pode ter essa dúvida ??
Vc não sabe a estrutura da tabela DBF que está usando ??
Não sabe que campos a compõe ??
Do contrário, ainda que simples, sua dúvida não seria talvez...
Como saber se um determinado campo está preenchido ou não ??
Ou ainda...
Como saber se um determinado campo tem um determinado conteúdo ou outro ??
Talvez seja mais interessante vc rever a estrutura da sua base de dados na sua composição. Desta forma, talvez vc consiga diminuir e, ao mesmo tempo, otimizar a sua utilização/acesso...
:xau Fui...
goulart@provsul.com.br
Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
goulart@provsul.com.br
Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
- Vander
- Usuário Nível 3

- Mensagens: 214
- Registrado em: 23 Jul 2004 01:43
- Localização: João Monlevade - MG
Amigo Renato;
Enviei um exemplo de como verifivar se existe um determinado campo em vários DBF's para o seu E-mail (renato686@hotmail.com), talvez te ajude em algo.
Vander
Enviei um exemplo de como verifivar se existe um determinado campo em vários DBF's para o seu E-mail (renato686@hotmail.com), talvez te ajude em algo.
Vander
depende....durante a impressão, tenho que verificar se no arquivo existe um determinado campo
se ele usa um gerador de relatorio generico, entao ele precisa testar para saber se o campo q vai ser impresso existe no dbf em questao.
mas isso tb depende....
se for realmente um gerador de relatorio generico, eu imagino q seja uma funçao, portanto, poderiam ser passado os campos a serem impressos como parametros.....
mas isso eh complicado...se vc precisar de um relatorio mais detalhado, ja foge totalmente da logica inicial...
eu, particularmente, ao gerar relatorios, indico quais campos serao impressos, faço os filtros com operadores, sem nada de set filter nem coisas do tipo...acho mais pratico assim, aos meus olhos, deixa o codigo mais legivel...hehehehe
mas isso vai de cada um...
- Vander
- Usuário Nível 3

- Mensagens: 214
- Registrado em: 23 Jul 2004 01:43
- Localização: João Monlevade - MG
Amigo Grings;
Você tem toda razão, abaixo segue o mesmo código que enviei.
Vander
Você tem toda razão, abaixo segue o mesmo código que enviei.
Vander
Código: Selecionar todos
set intensity on
set scoreboard off
IF !FILE("NOME_ARQ.NDS")
create ARQ.TMP
criacamp("A_R_Q_U_I ","C",12,0)
commit
create NOME_ARQ.NDS from ARQ.TMP
erase ARQ.TMP
close databases
ENDIF
IF !FILE("POSI_CAM.NDS")
create ARQ.TMP
criacamp("ARQUIVO_","C",12,0)
criacamp("POSICAO_","C",03,0)
criacamp("NOMEDOC_","C",12,0)
commit
create POSI_CAM.NDS from ARQ.TMP
erase ARQ.TMP
close databases
ENDIF
_total=0
a_campo=0
_campo1=""
set color to N/BGR
cls
@ 00,00 say PADC("LOCALIZADOR DE CAMPO - VersÆo 1.0",80) COLOR "N/BGR"
@ 02,28 TO 23,79
@ 03,30 SAY "NOTAS"
@ 05,31 SAY 'Fun‡Æo "temcampo" fornecida por Rochinha'
@ 07,31 SAY "Se for informado apenas a parte inicial do campo"
@ 08,29 SAY "e houver mais de um campo que satisfa‡a a condi‡Æo"
@ 09,29 say "em algum arquivo, apenas ser mostrado o primeiro"
@ 10,29 say "campo encontrado."
@ 12,31 say "Ser analizado apenas o diretorio corrente."
@ 02,00 SAY REPLICATE("Ä",28)+CHR(194)
@ 23,00 SAY REPLICATE("Ä",28)+CHR(193)
do while .t.
@ 03,00 clear to 22,27
run ("dir *.dbf/b > dbfs.txt")
_ccamp=space(10)
@ 01,00 say PADR(" Campo : ³ Informe o nome do campo ou a parte inicial a localizar",80) COLOR "N/BGR"
@ 24,00 say PADC(" ESC - Finalizar",80) COLOR "N/BGR"
set color to W/N,GR+/R,,,W+/B
@ 01,09 get _ccamp pict "@!"
read
if lastkey()=27
exit
endif
_ccampo=alltrim(_ccamp)
sele 1
use NOME_ARQ.NDS alias N_O_M_EA
ZAP
appe from DBFS sdf all
arqu=A_R_Q_U_I
SELE 2
USE &ARQU alias neutro
ZAP
SELE 3
USE POSI_CAM.NDS ALIAS P_O_S_IC
ZAP
SELE N_O_M_EA
go top
do while !eof()
arqu=A_R_Q_U_I
sele 2
USE &ARQU alias neutro
IF temcampo(_ccampo)
SELE P_O_S_IC
APPE BLAN
REPLA ARQUIVO_ WITH arqu
REPLA POSICAO_ WITH strzero(a_campo,3)
REPLA NOMEDOC_ WITH _campo1
_total=_total+1
endif
sele N_O_M_EA
skip
enddo
SELE P_O_S_IC
GO TOP
DECLARE CAMP[1],KOME[1]
CAMP[1]="ARQUIVO_+'³'+POSICAO_+'³'+NOMEDOC_"
KOME[1]=" ARQUIVO ³POS³NOME CAMPO"
@ 24,00 say PADC("ENTER - Voltar",80) COLOR "N/BGR"
SET COLOR TO W+/BGR
@ 20,00 TO 20,27
@ 21,02 SAY strzero(_total,4)+" Arquivos"
@ 22,02 SAY "Com o campo "+_ccampo
DBEDIT(03,00,19,27,CAMP,"NOS1",,KOME,chr(254))
SELE P_O_S_IC
ZAP
ENDDO
set color to
cls
erase dbfs.txt
erase NOME_ARQ.NDS
erase POSI_CAM.NDS
*
FUNC NOS1
PARA MODE,OPC
DO CASE
CASE MODE=0
RETURN 1
CASE MODE=1
RETURN 1
CASE MODE=2
RETURN 1
CASE MODE=3
@ 07,00 say "NÆo localozado arquivos com"
@ 08,00 say "o campo "+_ccampo
tone(1500,2)
inkey(3)
return 0
CASE LASTKEY()=13
RETURN 0
ENDCASE
*
Function temcampo(campo)
for i=1 to fcount()
if alltrim(field(i))=alltrim(campo)
a_campo=i
_campo1=FIELDNAME(I)
return .t.
endif
next
return .f.
*
procedure CRIACAMP
parameters nome,tipo,tam,dec
append blank
replace field_name with nome
replace field_type with tipo
replace field_len with tam
replace field_dec with dec
