Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2010, 13:55   #1
xKLONx
Новичок
Джуниор
 
Регистрация: 16.08.2010
Сообщений: 4
По умолчанию Запись даты в Paradox - поля date time

Цитата:
procedure TForm1.stroka(Date,Time: TDateTime);
var
S: string;
op: string;
begin
DateTimeToString(S, 'd.m.yyyy', Date);
DateTimeToString(op, 'hh:nn:ss', Time);
Memo1.lines.add(S);
Memo1.lines.add(op);
query1.close;
query1.SQL.clear;
query1.SQL.Add('insert into EVENTS (EV_ID, EV_DATE, EV_TIME, EV_TYPE, EV_CODE, NCARD, FCARD, DEVICE, CARD, STAFF) ');
query1.SQL.Add('values (1395067, '+S+', '+op+', 1, 105, 0, 0, 1322, null, null)');
query1.prepare;
query1.ExecSQL;
query1.Close;
end;
уже повсякому перепробовал строки то вроде нормальные получаются 16.8.2010 и 14:14:14
пишет invalid use of keyword
token: .2010

причем из sql эксплорера все нормально добавляется(

Последний раз редактировалось xKLONx; 16.08.2010 в 13:59.
xKLONx вне форума Ответить с цитированием
Старый 16.08.2010, 14:08   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
procedure TForm1.stroka(Date,Time: TDateTime);
var
S: string;
op: string;
begin
DateTimeToString(S, 'd.m.yyyy', Date);
DateTimeToString(op, 'hh:nn:ss', Time);
Memo1.lines.add(S);
Memo1.lines.add(op);
With query1 do begin
 close;
 SQL.clear;
 Parameters.ParamByName('Dat').Value:=Date;
 Parameters.ParamByName('tim').Value:=Time;
 sql.Add('insert into EVENTS (EV_ID, EV_DATE, EV_TIME, EV_TYPE, EV_CODE, NCARD, FCARD, DEVICE, CARD, STAFF) ');
 SQL.Add('values (1395067, :Dat, :tim, 1, 105, 0, 0, 1322, null, null)');
 ExecSQL;
end;
Смысл понял? Параметрами действуй.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.08.2010, 16:02   #3
xKLONx
Новичок
Джуниор
 
Регистрация: 16.08.2010
Сообщений: 4
По умолчанию

спасибо так работает, то есть в эти поля нужно все таки записывать TDateTime значения
а подскажите еще вопрос в этой таблице первый столбец цифровой он же индекс цифры поочереди идут откуда я могу получить последнее его значение или сделать автовставку
xKLONx вне форума Ответить с цитированием
Старый 16.08.2010, 16:13   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то есть в эти поля нужно все таки записывать TDateTime значения
Ну наверное )
Как раз если не знаешь правильного формата лучше параметризировать запрос.
Цитата:
или сделать автовставку
Это будет лучшей идеей (автоинкрементное поле).
Можно попробовать еще извратится триггерами, но... тут достаточно большое кол-во этих но учитывая Paradox
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.08.2010, 17:07   #5
xKLONx
Новичок
Джуниор
 
Регистрация: 16.08.2010
Сообщений: 4
По умолчанию

Цитата:
procedure TForm1.stroka(Date,Time: TDateTime);
var
S: string;
op: string;
bt: integer;
begin
DateTimeToString(S, 'd.m.yyyy', Date);
DateTimeToString(op, 'hh:nn:ss', Time);
with query1 do begin
close;
SQL.clear;
SQL.Add('select max(EV_ID) from EVENTS');
ExecSQL;
if recordcount >=1 then
bt:= FieldByName('EV_ID').AsInteger + 1
else bt:= 1;
end;
with query2 do begin
SQL.clear;
SQL.Add('insert into EVENTS (EV_ID, EV_DATE, EV_TIME, EV_TYPE, EV_CODE, NCARD, FCARD, DEVICE, CARD, STAFF) ');
SQL.Add('values (:index, :Dat, :Tim, 1, 105, 0, 0, 1322, null, null)');
ParamByName('index').Value:=bt;
ParamByName('Dat').Value:=Date;
ParamByName('Tim').Value:=Time;
ExecSQL;
Close;
end;
end;
Что то нехватает, cannot perform this operation on a closet dataset?
xKLONx вне форума Ответить с цитированием
Старый 17.08.2010, 17:10   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ExecSQL;
Close;
Close; убери совсем. Не нужно закрывать то что не открыто. ExecSQL набор не открывает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.08.2010, 17:40   #7
xKLONx
Новичок
Джуниор
 
Регистрация: 16.08.2010
Сообщений: 4
По умолчанию

спасибо, друг :D
вместо close; open; и дописать select max(EV_ID) as EV_ID from EVENTS
xKLONx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поля просмотра и Paradox Tralf БД в Delphi 1 29.03.2010 12:55
Исчезает Date and Time Picker! Klim Bassenger Microsoft Office Excel 17 24.11.2009 18:25
MySQl+PHP5 формат поля DATE Geddar SQL, базы данных 1 03.05.2009 16:54
Определить содержимое строки (date, time, datetime) NieL Общие вопросы Delphi 5 26.03.2009 18:48
Запись в БД в формате Date Cantana Помощь студентам 16 24.01.2008 11:30