SIX e o DBSEEK
Moderador: Moderadores
-
ALEX BORELLI
- Usuário Nível 3

- Mensagens: 118
- Registrado em: 24 Jan 2008 22:21
- Localização: Concórdia - SC
SIX e o DBSEEK
Ola amigos
Estou com um probleminha, o DBSEEK nao funciona no SIX (.NSX).
Deixa eu explicar o que quero fazer:
Quando cadastro um item no pedido do cliente, a rotina identifica pelo tamanho do codigo se é codigo do produto ou o codigo de barra. Considero acima de 7 casas como codigo de barra, e uso o dbseek para localizar o codigo do produto dentro do indice, mas no SIX nao esta funcionando.
Alguem pode me ajudar?
Estou com um probleminha, o DBSEEK nao funciona no SIX (.NSX).
Deixa eu explicar o que quero fazer:
Quando cadastro um item no pedido do cliente, a rotina identifica pelo tamanho do codigo se é codigo do produto ou o codigo de barra. Considero acima de 7 casas como codigo de barra, e uso o dbseek para localizar o codigo do produto dentro do indice, mas no SIX nao esta funcionando.
Alguem pode me ajudar?
Sem ver o código, só dá pra dizer que esta função funciona perfeitamente.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
ALEX BORELLI
- Usuário Nível 3

- Mensagens: 118
- Registrado em: 24 Jan 2008 22:21
- Localização: Concórdia - SC
Re: SIX e o DBSEEK
Ola amigos
Agradeco a ajuda, segue abaixo o codigo fonte:
Abertura do arquivo:
Funcao:
Agradeco a ajuda, segue abaixo o codigo fonte:
Abertura do arquivo:
Código: Selecionar todos
If AbreArquivo("Produtos", .T., 10) == .F.
Exit
End If
Set index to IndCProd, IndDescr, IDeAuEdt, IProBarr
@ 10, 16 Say [C¢digo..] + Seta Get vCodPro Pict[9999999999999] Valid( ConfPro( vCodPro, 09, 52 ) # .F. )
READ
If Lastkey() == K_ESC
M_botao( 22, 64, Chr(16) + [ RETORNA ] + Chr(17), "bg/b" )
Exit
End If Código: Selecionar todos
Function ConfPro( nCodPro, p2, p3 )
PUBLIC nQuaMov, nQuaCgi
IF LASTKEY() = K_UP
Return( .T. )
END IF
Select Produtos
cEncontra := .F.
IF LEN( ALLTRIM( STR( nCodPro ) ) ) > 7
Produtos->( DBSETORDER( 4 ) ) && QUANDO ENTRA AQUI USANDO O NSX
Produtos->( DBGOTOP() ) && NAO LOCALIZA O REGISTRO
cEncontra := Produtos->( DbSeek( nCodPro ) )
ELSE
Produtos->( DBSETORDER(1) )
Produtos->( DBGOTOP() )
cEncontra := Produtos->( DbSeek( nCodPro ) )
END IF
If cEncontra == .F.
Mensagem( 24, Mesg[23] )
Return( .F. )
Else
Public cDescri := Produtos->DESCRICAO,;
nPreUnit := Produtos->PREVENDA,;
vPreUnit := Produtos->PREVENDA,;
nnnReg := Produtos->( Recno() ),;
nPreCust := Produtos->PRECUSTO,;
cProduz := Produtos->PRODUZIDO,;
cMarca := "",;
cSitTrib := Produtos->SIT_TRIB,;
cUnidade := Produtos->UNIDADE,;
nIcms := Produtos->ICMS,;
nAutor := Produtos->AUTOR,;
nEditora := Produtos->EDITORA
IF PCOUNT() > 1
@ P2 ++, P3 SAY [Estoque.:] + STR( Produtos->QUANTIDADE, 6 )
SELECT PROFORA
nQuaMov := nQuaCgi := 0
IF PROFORA->( DBSEEK( nCodPro ) ) = .T.
WHILE PROFORA->CODIGO = nCodPro
IF PROFORA->VENDEDOR = nCodVend
nQuaMov += ( PROFORA->QUANTI - PROFORA->MOVIMENTO )
nQuaCgi += ( PROFORA->CONSIGNADO - PROFORA->BX_CONSIGN )
END IF
PROFORA->( DBSKIP() )
END DO
END IF
SELECT PRODUTOS
@ P2 ++, P3 SAY [Vendedor:] + STR( nQuaMov, 6 )
@ P2 ++, P3 SAY [Consign.:] + STR( nQuaCgi, 6 )
END IF
Produtos->( DBSETORDER(1) )
Return( .T. )
End If- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
DBSEEK
É dificil limitar-se a um único e possivel erro, pois todo temos formas diferentes de programar. Apenas leia o que indicaria e tente corrigir seu código:
1. Eu iria tratar diferente uma validação. Pois pelo que eu vejo, você está precisando navegar e liberar daquele GET quando o usuário digitar seta pra cima ou pra baixo.
2. Na função ConfPro, de primeira eu iria atribuir a duas variáveis (aera e order) para quando finalizar a função sejam restabelecida a área e a ordem em que inicialmente estava
3. Eu não usaria as variáveis que foram criadas do tipo PUBLIC ao menos que sejam SUMAMENTE necessárias, pois elas consomem mais memória
4. Utilizaria a variável cEncontra como retorno da função, mas antes iria re-estabelecer a possição da aera e order em que se encontrava.
Não executei seu exemplo, mas acho que o posicionamento e seleção das áreas é que basicamente poderia estar o seu erro.
1. Eu iria tratar diferente uma validação. Pois pelo que eu vejo, você está precisando navegar e liberar daquele GET quando o usuário digitar seta pra cima ou pra baixo.
2. Na função ConfPro, de primeira eu iria atribuir a duas variáveis (aera e order) para quando finalizar a função sejam restabelecida a área e a ordem em que inicialmente estava
3. Eu não usaria as variáveis que foram criadas do tipo PUBLIC ao menos que sejam SUMAMENTE necessárias, pois elas consomem mais memória
4. Utilizaria a variável cEncontra como retorno da função, mas antes iria re-estabelecer a possição da aera e order em que se encontrava.
Não executei seu exemplo, mas acho que o posicionamento e seleção das áreas é que basicamente poderia estar o seu erro.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
ALEX BORELLI
- Usuário Nível 3

- Mensagens: 118
- Registrado em: 24 Jan 2008 22:21
- Localização: Concórdia - SC
Re: SIX e o DBSEEK
Vou fazer essas alteracoes. No .NTX ele funciona certinho, no .NSX (SIX) nao. Talvez pela necessidade de ter de fazer essas alteracoes que voce me sugeriu.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
DBSEEK
Experimente fazer essa implementações, que nada mais são sempre bem vindas pois são necessárias (ao re-posicionamento da área) me refiro.
Você debugou ?. E percebeu que o código mesmo existente no BD dá como not found ?. Se for isso confirmado, verfiique a sintaxe para posicionar-se a ordem certa, pois eu não tenho como lhe dizer se a sua sintaxe está correta, pois não uso outro RDD que a original do Clipper.
Você debugou ?. E percebeu que o código mesmo existente no BD dá como not found ?. Se for isso confirmado, verfiique a sintaxe para posicionar-se a ordem certa, pois eu não tenho como lhe dizer se a sua sintaxe está correta, pois não uso outro RDD que a original do Clipper.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
ALEX BORELLI
- Usuário Nível 3

- Mensagens: 118
- Registrado em: 24 Jan 2008 22:21
- Localização: Concórdia - SC
Re: SIX e o DBSEEK
Pablo, o objetivo da rotina e verificar se o que esta digitado e o codigo de produto ou o codigo de barra do mesmo. Depois dele identificar o tipo (acima de 7 numeros e codigo de barra).
So que no .NSX nao esta funcionando, no .NTX sim.
So que no .NSX nao esta funcionando, no .NTX sim.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
DBSEEK
A minha perguntou foi se você DEBUGOU o seu código para ver como se comporta. Talvez você não tenha entendido, pois estava com erro a minha msg (agora corrigida).
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Onde está a parte do programa onde são criados os índices?
No que pese o fato dos conselhos do Pablo terem razão de ser, o código de busca aparentemente está correto. Mas não dá pra analisar corretamente sem ver como o índice 4 está sendo criado. O problema pode estar aí.
No que pese o fato dos conselhos do Pablo terem razão de ser, o código de busca aparentemente está correto. Mas não dá pra analisar corretamente sem ver como o índice 4 está sendo criado. O problema pode estar aí.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
ALEX BORELLI
- Usuário Nível 3

- Mensagens: 118
- Registrado em: 24 Jan 2008 22:21
- Localização: Concórdia - SC
Re: INDICES
IN
Desculpe, realmente faltou, segue codigo:Maligno escreveu:Onde está a parte do programa onde são criados os índices?
Código: Selecionar todos
aProdutos := { { "CODPRO", "N", 06, 0 },;
{ "CODPROFORN", "C", 12, 0 },;
{ "MARCA", "N", 05, 0 },;
{ "COD_DEPART", "N", 04, 0 },;
{ "DESCRICAO", "C", 80, 0 },;
{ "FORNECEDOR", "N", 05, 0 },;
{ "UNIDADE", "C", 05, 0 },;
{ "QUANTIDADE", "N", 10, 3 },;
{ "EST_MINI", "N", 10, 3 },;
{ "EMBALAGEM", "N", 05, 0 },;
{ "PREVENDA", "N", 15, 2 },;
{ "PRECUSTO", "N", 15, 2 },;
{ "CUST_CONTB", "N", 15, 2 },;
{ "ULT_CUSTO", "N", 15, 2 },;
{ "QTD_ULTCOM", "N", 10, 3 },;
{ "DT_ULT_VEN", "D", 08, 0 },;
{ "DT_ULT_COM", "D", 08, 0 },;
{ "MARKUP", "N", 10, 3 },;
{ "PRODUZIDO", "C", 01, 0 },;
{ "AUMENTO", "C", 01, 0 },;
{ "ICMS", "N", 08, 2 },;
{ "INATIVOS", "N", 15, 0 },;
{ "DIAS_S_MOV", "N", 15, 0 },;
{ "SIT_TRIB", "C", 03, 0 },;
{ "EDITORA", "N", 04, 0 },;
{ "AUTOR", "N", 05, 0 },;
{ "DESCRICAO2", "C", 80, 0 },;
{ "COLECAO", "N", 06, 0 },;
{ "AREA", "N", 04, 0 },;
{ "EDICAO", "N", 04, 0 },;
{ "ANO", "N", 04, 0 },;
{ "PAGINAS", "N", 04, 0 },;
{ "ISBN", "C", 10, 0 },;
{ "PESO", "N", 10, 3 },;
{ "TAMANHO", "C", 15, 0 },;
{ "TIPOMATER", "C", 10, 0 },;
{ "OBSERVACAO", "C", 30, 0 },;
{ "TEM_ESTOQ", "C", 30, 0 },;
{ "BARRA", "C", 13, 0 },;
{ "CONSIGNADO", "N", 15, 0 },;
{ "DESC_MAX", "N", 8, 2 },;
{ "E_KIT", "C", 1, 0 } }
If ! File( "produtos.dbf" )
dbcreate( "produtos.dbf", aProdutos )
End If
CLOSE ALL
If AbreArquivo("PRODUTOS", .F., 10) == .T.
Pack
Index on CODPRO to IndCProd
Index on DESCRICAO to IndDescr
Index on DESCRICAO + STRZERO( AUTOR, 5 ) + STRZERO( EDITORA, 4 ) to IDeAuEdt
Index on BARRA to IProBarr
Close All
END IFPelo código exposto parece que o índice 4 tem como chave apenas o valor BARRA. Esse valor é do tipo CHAR, mas a pesquisa é feita com um valor do tipo NUM. Está aí o erro, não?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
ALEX BORELLI
- Usuário Nível 3

- Mensagens: 118
- Registrado em: 24 Jan 2008 22:21
- Localização: Concórdia - SC
Re:
Vou fazer a alteracao e ver se funciona. O codigo como esta, com o .NTX funciona perfeitamente.Maligno escreveu:Esse valor é do tipo CHAR, mas a pesquisa é feita com um valor do tipo NUM. Está aí o erro, não?
Ok. Faça o teste. Mas se a chave do índice é CHAR e a pesquisa é feita com um valor NUM, realmente não deve encontrar o registro.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
ALEX BORELLI
- Usuário Nível 3

- Mensagens: 118
- Registrado em: 24 Jan 2008 22:21
- Localização: Concórdia - SC

