Página 1 de 1
Hb_DbCreateTemp e indices Cdx
Enviado: 23 Ago 2020 14:41
por Nascimento
Amigos eu estou tentando desde ontem usar essa função Hb_DbCreateTemp()
com indices cdx, observo que cria o banco de dados mais não consigo abrir o cdx, ao menos acho que não cria
este é um pequeno exemplo que achei no forum, então descidi testar até agora sem exito
Código: Selecionar todos
Function Main()
local i := 0
local aDbf := {}
aadd(adbf, {"itemcd", "c", 10, 0})
aadd(adbf, {"itemnm", "c", 40, 0})
aadd(adbf, {"rate", "n", 8, 2})
if !hb_dbcreatetemp("curItem", adbf,"DBFCDX")
Alert("Banco Nao foi criado")
return nil
endif
if select("curItem") = 0
use curItem new
endif
select curItem
FOR i := 1 To 10
append blank
curItem->itemcd := "CD_" + STRZERO( i, 7)
curItem->itemnm := "Compact Disc Number " + STR( i, 15)
curItem->rate := i
unlock
NEXT
// ja tentei de varias formas
index on itemcd tag 'cd' to 'curItem' memory
set inde to curItem memory
dbedit()
Return Nil
Hb_DbCreateTemp e indices Cdx
Enviado: 24 Ago 2020 10:06
por asimoes
Hb_DbCreateTemp e indices Cdx
Enviado: 24 Ago 2020 11:03
por asimoes
Nas minhas pastas harbour achei isso:
Não é temporário mas atente para o tipo:
Código: Selecionar todos
aStru := {}
aAdd( aStru, {"AUTO", "+", 4, 0} )
aAdd( aStru, {"CODIGO", "C", 4, 0} )
aAdd( aStru, {'VarChar100' , 'Q', 100, 0 })
//aAdd( aStru, {'Image10' , 'P', 10, 0 })
aAdd( aStru, {'VarBin100' , 'VarBinary', 100, 0 })
DbCreate( "testdbf", aStru, "DBFCDX", .T., "MYALIAS" )
MYALIAS->( DbAppend() )
MYALIAS->CODIGO := '0001'
MYALIAS->VarChar100 := 'ALEXANDRE'
MYALIAS->VarBin100 := 100
MYALIAS->( DbAppend() )
MYALIAS->CODIGO := '0002'
MYALIAS->VarChar100 := 'ALEXANDRE SIMOES'
MYALIAS->VarBin100 := 100
Hb_DbCreateTemp e indices Cdx
Enviado: 24 Ago 2020 11:06
por asimoes
teste com hb32 funcionou:
Código: Selecionar todos
aStruct:={{ "VEND", "C", 14, 0 },;
{ "VARCHAR100", "Q", 100, 0 },;
{ "FILX", "C", 02, 0 } }
HB_DBCreateTemp("teste", aStruct)
Hb_DbCreateTemp e indices Cdx
Enviado: 24 Ago 2020 11:19
por Nascimento
asimoes escreveu:teste com hb32 funcionou:
Código: Selecionar todos
aStruct:={{ "VEND", "C", 14, 0 },;
{ "VARCHAR100", "Q", 100, 0 },;
{ "FILX", "C", 02, 0 } }
HB_DBCreateTemp("teste", aStruct)
a criação da dbf funciona normal, estou falando a criação do indice
index on blabla tag blabla
set index blabla // aqui da o erro
Hb_DbCreateTemp e indices Cdx
Enviado: 24 Ago 2020 13:23
por asimoes
Nascimento escreveu:a criação da dbf funciona normal, estou falando a criação do indice
index on blabla tag blabla
set index blabla // aqui da o erro
Experimenta:
INDEX ON CAMPO TAG TESTE
TESTE->( OrdSetFocus(1) )
ou
TESTE->( OrdSetFocus("TESTE") )
Já fiz o teste aqui
Hb_DbCreateTemp e indices Cdx
Enviado: 24 Ago 2020 13:30
por JoséQuintas
E tem a função de deletar tag da RDD.
Não lembro o nome, porque não lembro nem de ter usado.
Assim apaga sem nem saber o nome do arquivo físico.
Hb_DbCreateTemp e indices Cdx
Enviado: 24 Ago 2020 13:33
por JoséQuintas
ASimões:
Acabei excluindo a mensagem que pareceu duplicada
Mas depois pensei que poderia ter alterado pra dbSetOrder().
Desculpe, e avise caso eu tenha feito besteira.
Hb_DbCreateTemp e indices Cdx
Enviado: 24 Ago 2020 13:38
por asimoes
Pra funcionar direito ai no seu sistema:
Código: Selecionar todos
INDEX ON VEND TAG TESTE1 TO TESTE TEMPORARY ADDITIVE
INDEX ON FILX TAG TESTE2 TO TESTE TEMPORARY ADDITIVE
TESTE->( DbSetOrder(1) )
OU
TESTE->( DbSetOrder("TESTE1") )
OU
TESTE->( OrdSetFocus(2) )
OU
TESTE->( OrdSetFocus("TESTE2") )
Hb_DbCreateTemp e indices Cdx
Enviado: 24 Ago 2020 13:42
por asimoes
TEMPORARY ADDITIVE para criar os indices em memória
Hb_DbCreateTemp e indices Cdx
Enviado: 24 Ago 2020 13:47
por asimoes
Para excluir o indice:
OrdDestroy( <cIndexName> [, <cIndexFile>] )
Hb_DbCreateTemp e indices Cdx
Enviado: 25 Ago 2020 01:27
por Nascimento
mais tarde estarei testando hj para poder concluir a função criei normalmente mesmo
mais tarde testo e lhes direi se funcionou, obrigados a todos por hora
att:Nascimento
JoséQuintas escreveu:ASimões:
Acabei excluindo a mensagem que pareceu duplicada
Mas depois pensei que poderia ter alterado pra dbSetOrder().
Desculpe, e avise caso eu tenha feito besteira.
tentei tambem amigo quintas não funcionou corretamente
Hb_DbCreateTemp e indices Cdx
Enviado: 25 Ago 2020 16:09
por Nascimento
aparentemente até agora tudo funcionando ok
obrigado a todos!!
Hb_DbCreateTemp e indices Cdx
Enviado: 23 Jan 2024 10:31
por fladimir
Testei aki funcionou a criação e os indices, porém se faço um append from (tabela fisica) para a tabela temporaria, não puxa os dados, ou seja, somente via inserção manual (append blank etc)
Alguém sabe como copiar dados a partir de outra tabela para a tabela temporaria?
Gostaria de fazer algo do tipo
Código: Selecionar todos
aStruct := Base->( dbstruct() )
FechaArea('Base')
if !hb_dbcreatetemp("Teste", aStruct)
Alert("Cannot create temporary table: Item")
return nil
endif
APPEND FROM Base FOR dataMov >= dt1 .AND. dataMov <= dt2 .AND. cancelado != 'S'
Hb_DbCreateTemp e indices Cdx
Enviado: 23 Jan 2024 12:02
por JoséQuintas
Cadê o USE ?