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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2007, 13:50   #1
Canadec
Пользователь
 
Регистрация: 17.07.2007
Сообщений: 12
По умолчанию Тип данных в Interbase

Вобщем вопрос такого плана, есть такой код в Delphi:
...
var data,day,mon,year :string
...
data:=10.09.2007
day:=copy(data,1,2)
mon:=copy(data,4,2)
year:=copy(data,7,4)
QAA.close;
QAA.sql.clear;
QAA.sql.add('insert into j_v_un (Day,Mon,Year) values');
QAA.sql.add(' '+day+', '+mon+','+year+' ');
QAA.open;
Во время просмотра записей в базе вместо mon=09 все время mon=9. Т.е. первый ноль он не считает за символ, и по ходу в самой базе. База данных Interbase 6.0, типы полей day,mon,year - char или varchar.
Заранее спасибо!
Canadec вне форума Ответить с цитированием
Старый 29.08.2007, 01:22   #2
Xam
Новичок
Джуниор
 
Регистрация: 29.08.2007
Сообщений: 2
По умолчанию

Возможно при выполнении запроса происходит автоматическое конвертирование типов данных.
Попробуй изменить строчку:
QAA.sql.add(' '+day+', '+mon+','+year+' ');
на:
QAA.sql.add(''''+day+''', '''+mon+''','''+year+''''); - да так много апострофов
ну, пробелы сам расставишь как надо

А вообще, советую пользоваться параметрами
Xam вне форума Ответить с цитированием
Старый 29.08.2007, 08:25   #3
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от Canadec Посмотреть сообщение
Вобщем вопрос такого плана, есть такой код в Delphi:
...
var data,day,mon,year :string
...
data:=10.09.2007
day:=copy(data,1,2)
mon:=copy(data,4,2)
year:=copy(data,7,4)
QAA.close;
QAA.sql.clear;
QAA.sql.add('insert into j_v_un (Day,Mon,Year) values');
QAA.sql.add(' '+day+', '+mon+','+year+' ');
QAA.open;
Во время просмотра записей в базе вместо mon=09 все время mon=9. Т.е. первый ноль он не считает за символ, и по ходу в самой базе. База данных Interbase 6.0, типы полей day,mon,year - char или varchar.
Заранее спасибо!
Во-первіх, тип стринг пишется в ' ', т.е Data:='10.09.2007';
во-вторіх, чтобі не парится с '''' ,можно пользоваться quotedStr(ляляля)
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Pitbull вне форума Ответить с цитированием
Старый 29.08.2007, 17:07   #4
Canadec
Пользователь
 
Регистрация: 17.07.2007
Сообщений: 12
По умолчанию

Вот так все заработало:

...var data,day,mon,year :string...data:=10.09.2007day:=copy(data,1,2)mon:=copy(data,4,2)year:=copy(data,7,4)QAA.close;QAA.sql.clear;QAA.sql.ad d('insert into j_v_un (Day,Mon,Year) values');QAA.sql.add('(rm1, :Prm2, :Prm3;');QAA.Parameters.ParamByName('Prm1').asstring:=day;QAA.Parameters.Para mByName('Prm2').asstring:=mon;QAA.Parameters.Para mByName('Prm3').asstring:=year;QAA.ExecSQL;
Canadec вне форума Ответить с цитированием
Старый 29.08.2007, 17:34   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Использовать day:=copy(data,1,2) не лучший вариант.
Лучше использовать EncodeDate() или хотябы привести дату в нужный формат FormatDateTime(). Иначе, если в региональных настройках стоит неверный формат, выскочит абракадабра.
_SERGEYX_ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание базы данных в InterBase. EdNovice БД в Delphi 5 22.04.2012 11:07
Ввод рег.Данных в Interbase pro2f БД в Delphi 4 03.09.2007 14:49
InterBase EdNovice БД в Delphi 1 11.05.2007 12:12
InterBase 6.5 san4es БД в Delphi 0 12.12.2006 20:03