Página 1 de 1

indexar campo datatime

Enviado: 20 Ago 2013 10:20
por Itamar M. Lins Jr.
Ola!
Como indexar um campo no formato data time com o parâmetro "for" ?

Saudações,
Itamar M. Lins Jr.

indexar campo datatime

Enviado: 20 Ago 2013 11:28
por alxsts
Olá!

Qual base de dados você está usando?

indexar campo datatime

Enviado: 20 Ago 2013 12:00
por Itamar M. Lins Jr.
Dbf mesmo

indexar campo datatime

Enviado: 20 Ago 2013 14:24
por Jairo Maia
Não sei se entendi direito, mas seria isso?:

Código: Selecionar todos

INDEX ON DToS( datavenda ) + horario TAG Vendas FOR ( datavenda <= Date() .And. horario >= "00:00:00" )

indexar campo datatime

Enviado: 20 Ago 2013 17:13
por Itamar M. Lins Jr.
Usando o campo no dbf datetime [@] não é mais necessário grava a hora em campo separado.
Eu tinha editado um campo datatime via hbrun sem ativar o set century on e fiz uma confusão aqui nos testes.
Para indexar basta o dtos() mesmo com a clausula for.

Saudações,
Itamar M. Lins Jr.

indexar campo datatime

Enviado: 20 Ago 2013 17:43
por alxsts
Olá!

Não conhecia este tipo de dado datetime em xBase. Por isso perguntei em outra mensagem.

Poderia dar um exemplo de criação de tabela e manipulação de variável com este tipo de dado?

Grato

indexar campo datatime

Enviado: 20 Ago 2013 18:30
por Itamar M. Lins Jr.
Claro
Tem muita coisa para ser explorada no Harbour.
Harbour tipos estendidos:
O campo datetime [@]
Por exemplo:

Código: Selecionar todos

   aStru :=  {{'Data','@',08,0}}
   dbcreate("temp.dbf",aStru,"DBFCDX")
Irá criar um dbf e quando salvar a data vai salvar a hora junto.
No Browse é mostrado assim
SET DATE FORMAT to "DD-MM-YYYY"
20-08-2013 18:26:00.000 isso mesmo com horas, minutos, segundos...
Aceita todos os comandos para data e mais outros tantos para manipulação de horas etc...
Se usar valtype(data) //Retorna "T" ao invés de "D"
M Memo 4 or 8 Memo
+ AutoInc 4 Auto increment
= ModTime 8 Last modified date & time of this record
^ RowVers 8 Row version number; modification count of this record
@ DayTime 8 Date & Time
I Integer 1, 2, 3, 4 or 8 Signed Integer ( Width : )" },;
T Time 4 or 8 Only time (if width is 4 ) or Date & Time (if width is 8 ) (?)
V Variant 3, 4, 6 or more Variable type Field
Y Currency 8 64 bit integer with implied 4 decimal
B Double 8 Floating point / 64 bit bina
Saudações,
Itamar M. Lins Jr.

indexar campo datatime

Enviado: 20 Ago 2013 18:54
por alxsts
Olá Itamar.

Obrigado pela informação. Nunca imaginei isso. Funciona em DBFNTX?

indexar campo datatime

Enviado: 21 Ago 2013 02:04
por Jairo Maia
Olá Pessoal,
Itamar M. Lins Jr. escreveu:Tem muita coisa para ser explorada no Harbour.
Tem viu. Eu também não conhecia esse recurso. Valeu a dica.
alxsts escreveu: Funciona em DBFNTX?
Alexandre, Sim! Testei também em DBFNTX.

Porém, há diferença de comportamento entre Harbour e xHarbour. Veja as anotações no próprio exemplo abaixo:

Código: Selecionar todos

/*
  Usar as libs: xhb e hbct
*/

Request DbfCdx

Function Main

 Set Date Brit
 Set Century On

 Clear Screen

 xDateTime := DateTime()

 /*
   a ValType() em xHarbour retorna D, e em Harbour T,
   mas a letra T de Time, nao a de True .T.
 */
 ?
 ? ValType( xDateTime )

 ? Hb_IsDateTime( xDateTime )
 ? TtoS( xDateTime )
 ? TtoC( xDateTime )

 cDateTime := TtoC( xDateTime )
 ? CtoT( cDateTime )

 cDateTime := TtoS( xDateTime )
 ? StoT( cDateTime )

 ? CharOnly( "0123456789", TtoC( xDateTime ) )

 aStru := { { 'Data', '@', 08, 0 } }
 DbCreate( "Temp.Dbf", aStru, "DBFCDX" )

 Use Temp Shared New

 Append Blank
 Repl data With Date()  // com Date(), veja obs abaixo

 Append Blank
 Repl data With DateTime()  // com DateTime(), veja obs abaixo

 Go Top
 Browse()

 /*
    Obs:
     com apenas Date() em Harbour, a hora fica zerada: 00:00:00.000
     com DateTime() hora e data corrente sao gravadas. em xHarbour
     em ambos casos data e hora corrente sao gravados
 */

 SetPos( 10, 1 )

Return