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 ?