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