Amigos, peguei um exemplo de um livro de DBase III Plus e o estou usando, para construir um pequeno aplicativo, porém, estou tendo problemas com o arquivo de índices cdx ou, presumo eu, com a abertura da Select, vocês podem me ajudar? Desde já, sou-lhes grato por futura ajuda.
Problemas com indices no Harbour ...
Moderador: Moderadores
-
arcanjoebc
- Usuário Nível 2

- Mensagens: 63
- Registrado em: 23 Dez 2015 23:58
- Localização: Tramandaí/RS
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Problemas com indices no Harbour ...
Amigo, faltou postar o código (PRG) onde está ocorrendo o erro.
Tudo indica que você está tentando abrir um arquivo de índice sem ter um arquivo DBF aberto. Então verifique se realmente o arquivo DBF está aberto, principalmente se o arquivo esta sendo aberto em modo exclusivo, pode ocorrer de o arquivo já estar aberto em outra área por um outro usuário na rede.
Abraços,
Tudo indica que você está tentando abrir um arquivo de índice sem ter um arquivo DBF aberto. Então verifique se realmente o arquivo DBF está aberto, principalmente se o arquivo esta sendo aberto em modo exclusivo, pode ocorrer de o arquivo já estar aberto em outra área por um outro usuário na rede.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
-
arcanjoebc
- Usuário Nível 2

- Mensagens: 63
- Registrado em: 23 Dez 2015 23:58
- Localização: Tramandaí/RS
Problemas com indices no Harbour ...
Olá amigo Toledo! Desculpe meu esquecimento ... aliás, faz um bom tempo que não trabalho mais com xBase e voltar após tanto tempo, trás velhos inconvenientes. Bem, abaixo, coloco a tua disposição o código que cria os bancos de dados, o que cria os indices e o menu principal, onde é apontado o erro acima mencionado no screenshot:
Criação das bases de dados
Criação dos índices:
Menu principal do sistema:
Espero que possas me ajudar com meu dilema, caro amigo! Desde já, sou-lhe grato por qualquer ajuda que puderes me fornecer.
Everaldo
Criação das bases de dados
Código: Selecionar todos
*-----------------------------------------*
* PROGRAMA : struc.prg *
* AUTOR : Everaldo Bernardo Cunha *
* DATA : 28/04/2016 *
* FINALIDADE : Criar base de dados .dbf *
*-----------------------------------------*
PROCEDURE struc
IF .NOT. FILE("bcmov.dbf")
aDBF := {}
//
aAdd(aDBF, {"LANCAMENTO", "N",04,0})
aAdd(aDBF, {"BANCO", "N",02,0})
aAdd(aDBF, {"TIPO", "N",01,0})
aAdd(aDBF, {"NOMETIPO", "C",14,0})
aAdd(aDBF, {"VALOR", "N",13,2})
aAdd(aDBF, {"DATA", "D",08,0})
aAdd(aDBF, {"DOCUM", "C",10,0})
aAdd(aDBF, {"HISTORICO", "C",47,0})
aAdd(aDBF, {"CHEQUE", "C",09,0})
//
dbCreate("bcmov",aDBF)
ENDIF
IF .NOT. FILE("bccad.dbf")
aDBF := {}
//
aAdd(aDBF, {"CODBCO", "N",02,0})
aAdd(aDBF, {"NOME", "C",30,0})
aAdd(aDBF, {"NUMAGE", "N",07,0})
aAdd(aDBF, {"AGENCIA", "C",25,0})
aAdd(aDBF, {"CONTA", "N",10,0})
aAdd(aDBF, {"SALDO", "N",13,2})
//
dbCreate("bccad.dbf",aDBF)
ENDIF
IF .NOT. FILE("bcmes.dbf")
aDBF := {}
//
aAdd(aDBF, {"LANCAMENTO", "N",04,0})
aAdd(aDBF, {"BANCO", "N",02,0})
aAdd(aDBF, {"TIPO", "N",01,0})
aAdd(aDBF, {"NOMETIPO", "C",14,0})
aAdd(aDBF, {"VALOR", "N",13,2})
aAdd(aDBF, {"DATA", "D",08,0})
aAdd(aDBF, {"DOCUM", "C",10,0})
aAdd(aDBF, {"HISTORICO", "C",47,0})
aAdd(aDBF, {"CHEQUE", "C",09,0})
//
dbCreate("bcmes",aDBF)
ENDIF
IF .NOT. FILE("bcant.dbf")
aDBF := {}
//
aAdd(aDBF, {"LANCAMENTO", "N",04,0})
aAdd(aDBF, {"BANCO", "N",02,0})
aAdd(aDBF, {"TIPO", "N",01,0})
aAdd(aDBF, {"NOMETIPO", "C",14,0})
aAdd(aDBF, {"VALOR", "N",13,2})
aAdd(aDBF, {"DATA", "D",08,0})
aAdd(aDBF, {"DOCUM", "C",10,0})
aAdd(aDBF, {"HISTORICO", "C",47,0})
aAdd(aDBF, {"CHEQUE", "C",09,0})
//
dbCreate("bcant",aDBF)
ENDIF
RETURNCódigo: Selecionar todos
*------------------------------------------*
* PROGRAMA : indices.prg *
* AUTOR : Everaldo Bernardo Cunha *
* DATA : 29/04/2016 *
* FINALIDADE : Criar arquivos de indices *
*------------------------------------------*
REQUEST DBFNTX
RDDSETDEFAULT("DBFNTX")
IF .NOT. FILE("bcmes.ntx")
SELE C
USE bcmes
INDEX ON LANCAMENTO TO bcmes
USE
ENDIF
//
IF .NOT. FILE("bcmesdt.ntx")
SELE C2
USE bcmes
INDEX ON DATA TO bcmesdt
USE
ENDIF
//
IF .NOT. FILE("bccad.ntx")
SELE B
USE bccad
INDEX ON CODBCO TO bccad
USE
ENDIF
//
IF .NOT. FILE("bcmov.ntx")
SELE A
USE bcmov
INDEX ON LANCAMENTO TO bcmov
USE
ENDIF
//
IF .NOT. FILE("bcmovdt.ntx")
SELE A2
USE bcmov
INDEX ON DATA TO bcmovdt
USE
ENDIF
close all
returnCódigo: Selecionar todos
*-------------------------------------------*
* PROGRAMA : bc.prg *
* AUTOR : EVERALDO BERNARDO CUNHA *
* DATA : 28/04/2016 *
* FINALIDADE : Gerenciar arquivos *
*-------------------------------------------*
function main ()
SET DATE FRENCH
SET CENTURY ON
REQUEST DBFNTX
RDDSETDEFAULT("DBFNTX")
DO struc
DO indices
CLEAR
@ 01,23 SAY "DATALOGICA"
@ 02,50 SAY "SISTEMA DE CONTROLE DE BANCOS - Versao 1.0"
@ 03,23 SAY "Mensagem [ "
@ 03,109 SAY "]"
@ 04,00 SAY "_________________________________________________________________________________________________________________________________________________"
CLEAR ALL
SELE C
USE bcmes INDEX bcmes
SELE B
USE bccad INDEX bccad
SELE A
USE bcmov INDEX bcmov
PUBLIC WDATA
WDATA = DATE()
@ 03,34 SAY "Informe a data de hoje."
@ 01,83 SAY "Data: [ ]"
@ 01,90 GET WDATA
READ
@ 03,33 SAY SPACE(60)
WOP = 9
DO WHILE WOP # 0
@ 05,00 CLEAR
@ 10,60 SAY "0 - Fim"
@ 11,60 SAY "1 - Manutencao de Bancos"
@ 12,60 SAY "2 - Rotina Diaria"
@ 13,60 SAY "3 - Rotina Mensal"
WOP = 9
DO WHILE WOP > 3
WOP = 0
@ 16,53 SAY "Entre com sua opcao:" GET WOP PICT "9"
READ
IF WOP > 3
ENTER = SPACE(01)
@ 03,34 SAY "OPCAO INVALIDA - TECLE <ENTER>" GET ENTER
READ
@ 03,34 SAY SPACE(60)
ENDIF
ENDDO
DO CASE
CASE WOP = 1
DO bcmanbco
CASE WOP = 2
DO bcrotdia
CASE WOP = 3
* DO bcrotmes
ENDCASE
ENDDO
CLEAR ALL
RETURNEveraldo
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Problemas com indices no Harbour ...
Olá arcanjoebc,
Só para adiantar:
Na sua função Main() (do menu), troque a linha 12 para cima da linha 7, deixando esse início assim:Todo REQUEST deve ficar antes da declaração da função Main().
Na função Indices(), altere as seguintes linhas:
de SELE C2 para SELE C
de SELE A2 para SELE A
Ou simplesmente use sempre SELE A ou SELE 0. Isso faz com que a próxima área livre seja selecionada para abrir o arquivo.
Veja se vai funcionar.
Só para adiantar:
Na sua função Main() (do menu), troque a linha 12 para cima da linha 7, deixando esse início assim:
Código: Selecionar todos
REQUEST DBFNTX // <= coloque o Request antes de Main()
function main ()
RDDSETDEFAULT("DBFNTX")
SET DATE FRENCH
SET CENTURY ON
DO struc
DO indices
// demais códigosNa função Indices(), altere as seguintes linhas:
de SELE C2 para SELE C
de SELE A2 para SELE A
Ou simplesmente use sempre SELE A ou SELE 0. Isso faz com que a próxima área livre seja selecionada para abrir o arquivo.
Veja se vai funcionar.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
arcanjoebc
- Usuário Nível 2

- Mensagens: 63
- Registrado em: 23 Dez 2015 23:58
- Localização: Tramandaí/RS