Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];

Вниз

Формат даты в FireBird   Найти похожие ветки 

 
O.O   (2006-10-09 12:22) [0]

Зависит ли формат Даты в SQL запросе от системных настроек Windows или он всегда должен писаться через точку, и как тогда правильно dd.mm.yyyy или mm.dd.yyyy


 
Desdechado ©   (2006-10-09 12:31) [1]

правильно - через параметры, для которых формат не имеет значения, ибо используется внетреннее представление TDateTime


 
Sergey13 ©   (2006-10-09 13:04) [2]

> [1] Desdechado ©   (09.10.06 12:31)
> правильно - через параметры

Я бы добавил "правильного типа". А то и через строковые можно. 8-)


 
O.O   (2006-10-09 13:05) [3]

Правильно ли понимаю?
В таблице 10 различных полей
Мне нужно добавлять записи с внесением данных в три поля:

-ключ
-ФИО
-ДАТА

Добавляю в TIBQuery.Params 3 параметра А,B,C
A - тип ftInteger
B - тип ftString
С - тип ftDate
затем так

 Q.SQL.Append("INSERT INTO Table (ID_Field, FIO, DATE) VALUES(:A, :B, :C)");
 Q.ParamByName("A").AsInteger := StrToInt(Edit1.Text);
 Q.ParamByName("B").AsString := Edit2.Text;
 Q.ParamByName("C").AsDateTime := DateTimePicker1.Date;
 Q.Open;

или подругому ?


 
Sergey13 ©   (2006-10-09 13:08) [4]

> [3] O.O   (09.10.06 13:05)

Идея про параметры воспринята правильно, что можно было бы и самому проверить.
А вот за
Q.ParamByName("A").AsInteger := StrToInt(Edit1.Text);
если это то, о чем я подумал, надо руки отрывать. 8-)


 
O.O   (2006-10-09 13:24) [5]

Скажи как правильно и я сам их себе оторву :)


 
Sergey13 ©   (2006-10-09 13:30) [6]

> [5] O.O   (09.10.06 13:24)

Если ID_Field - это поле ПЕВИЧНОГО КЛЮЧА (судя по названию это так и есть) то значения в него руками не вносят (за очень редким исключением, оговорюсь что бы не поднимать вечный спор 8-). Для этого в FireBird есть генераторы, значения которых записывают в таблице тригерами.


 
Sergey13 ©   (2006-10-09 13:32) [7]

> [5] O.O   (09.10.06 13:24)

http://www.ibase.ru/devinfo/generator.htm
И остальное смотри - там много полезного.


 
atruhin ©   (2006-10-09 13:36) [8]

> Если ID_Field - это поле ПЕВИЧНОГО КЛЮЧА (судя по названию
> это так и есть) то значения в него руками не вносят

Ну почему не вносят? Запрашивают генератор и вносят. Нормальный стиль работы с ФБ.

> [3] O.O   (09.10.06 13:05)

Это не правильно. Примерно так:
Q.SQL.Text := "....";
Q.Prepare;
Q.ParamByName().As...
Q.Exec....
Если очень нужно без параметров, то FB принимает дату, не зависимо от локали, в формате: yyyy.mm.dd


 
O.O   (2006-10-09 13:40) [9]

Спасибо всем за помощь


 
Sergey13 ©   (2006-10-09 13:46) [10]

> [8] atruhin ©   (09.10.06 13:36)
> Ну почему не вносят? Запрашивают генератор и вносят. Нормальный
> стиль работы с ФБ.
А запрашивают по телефону, что бы руками ввести? 8-)


 
O.O   (2006-10-09 14:01) [11]

Ребяты, я там просто для примера привёл чё в голову взбрело. Конечно-же поле первичного ключа заполняю используя генератор.


 
Rule ©   (2006-10-09 14:03) [12]

atruhin ©   (09.10.06 13:36) [8]
Ну почему не вносят? Запрашивают генератор и вносят. Нормальный стиль работы с ФБ.


ссылку на первоисточник ... или ты у нас законодатель формата ?
ответь на вопрос тогда: зачем это делать ??? зачем запрашивать значение генератора а потом вносить изменения ???, а как же тогда многопользовательность и конфликты ???


 
O.O   (2006-10-09 14:33) [13]

К примеру делаю новую запись в таблице А и таблице Б, и есть необходимость чтоб в поле первичного ключа обеих таблиц было одно и тоже значение. Такое вполне может быть. Получаем одно значение генератора и заполняем поле ключа в обеих таблицах. Если в добавок к этому во всех таблицах базы используется один и тот-же генератор, то на мой взгляд никаких конфликтов быть не может.


 
_RusLAN ©   (2006-10-09 14:58) [14]

> во всех таблицах базы используется один и тот-же генератор

а это еще зачем????


 
O.O   (2006-10-09 15:02) [15]

А почему нет?
Абсолютная атомарность всех записей в базе данных


 
O.O   (2006-10-09 15:09) [16]

Ещё если у всех таблиц поле первичного кода одинаково называется так вообще красота.


 
O.O   (2006-10-09 15:10) [17]

Первичного ключа, очепятка :)


 
Rule ©   (2006-10-09 15:55) [18]

O.O   (09.10.06 14:33) [13]
примеру делаю новую запись в таблице А и таблице Б, и есть необходимость чтоб в поле первичного ключа обеих таблиц было одно и тоже значение.


зачем ????


 
Sergey13 ©   (2006-10-09 16:00) [19]

> [18] Rule ©   (09.10.06 15:55)

А что? При связи 1:1 очень удобно. И ПК и ВК одновременно.


 
Rule ©   (2006-10-09 16:02) [20]

Sergey13 ©   (09.10.06 16:00) [19]
а не проще тогда записи вставлять с помощью хранимки, как это делают мелкомягкие ...


 
Rule ©   (2006-10-09 16:03) [21]

или регулировать этот вопрос внутри базы, ибо уверен что конфликты при мультиюзерстве неизбежны ...


 
Sergey13 ©   (2006-10-09 16:12) [22]

> [20] Rule ©   (09.10.06 16:02)
Проще чем что? Лично я например не сторонник писать на всё и вся хранимки, ибо смысла особого не вижу.

> [21] Rule ©   (09.10.06 16:03)
А какие тут могут быть конфликты?


 
Konrads   (2006-10-09 16:15) [23]

Была бы возможность, а её использование нет-нет да и пригодится :)
А какие конфликты в мультиюзерстве? Откуда им взятся? Какой природы может возникнуть конфликт?


 
Konrads   (2006-10-09 16:17) [24]

Sergey13 одновременно практически :)


 
Rule ©   (2006-10-09 16:21) [25]

отвечаю про конфликт: при вставке новой записи если беру значение генератора до вставки, тогда при неудачной вставке засада -  ниспользованое значение, не фатально, но всеже неприятно, если в процессе вставки, то не известно сколько будет вставляться запись и может оказаться что в этот момент тоже самое значение взял кто-то другой и тогда будет дублирование ...


 
Konrads   (2006-10-09 16:22) [26]

тоже значение взять невозможно


 
Sergey13 ©   (2006-10-09 16:41) [27]

> [25] Rule ©   (09.10.06 16:21)
Ну дыры в ИД обсуждать не будем, надоело. 8-)

> если в процессе вставки, то не известно сколько будет вставляться
> запись и может оказаться что в этот момент тоже самое значение
> взял кто-то другой и тогда будет дублирование
А откуда дублирование то?
1. :ID = Select Gen_Id(Gen,1) from RDB$DATABASE
2. Insert into table1(id) values(:ID)
3. Insert into table2(id) values(:ID)


 
Johnmen ©   (2006-10-09 16:44) [28]


> Rule ©   (09.10.06 15:55) [18]
> O.O   (09.10.06 14:33) [13] примеру делаю новую запись в
> таблице А и таблице Б, и есть необходимость чтоб в поле
> первичного ключа обеих таблиц было одно и тоже значение.
> зачем ????


В две таблицы - Мастерную и Детальную.


> Rule ©   (09.10.06 16:21) [25]
> отвечаю про конфликт: при вставке новой записи если беру
> значение генератора до вставки, тогда при неудачной вставке
> засада -  ниспользованое значение, не фатально, но всеже
> неприятно,


Кому неприятно? Серверу? :)


>если в процессе вставки, то не известно сколько
> будет вставляться запись и может оказаться что в этот момент
> тоже самое значение взял кто-то другой и тогда будет дублирование
> ...


Так никто не делает. Разве что совсем новички...


 
Rule ©   (2006-10-09 16:45) [29]

Sergey13 ©   (09.10.06 16:41) [27]
бац а запись не может быть вставлена, и все дырка ... ничего страшного, повторяюсь, но неприятно


 
Rule ©   (2006-10-09 16:46) [30]

лана, поддерживаю:
Sergey13 ©   (09.10.06 16:41) [27]
Ну дыры в ИД обсуждать не будем, надоело. 8-)


закрываю тему ...но помоему проще в хранимку засунуть, хотя дело вкуса ...


 
Johnmen ©   (2006-10-09 16:49) [31]


> Rule ©   (09.10.06 16:46) [30]
> ...но помоему проще в хранимку засунуть, хотя дело вкуса


Чем хранимка спасёт пламенного борца с дырками?
:)))


 
Konrads   (2006-10-09 16:54) [32]

Основное свойство значения полученного от генератора не непрерывная последовательность натуральных чисел, а их уникальность, и тоже самое относится к первичному ключу. Какая принципиальная или другая разница какое значение будет записано в поле первичного ключа, просто интересно. Какие алгоритмы сломаются если между соседними значениями будет разница отличная от единицы (или любого другого равномерного интервала). Если такие алгоритмы есть в программе, что сними делать после удаления записей из таблицы?


 
Rule ©   (2006-10-09 16:56) [33]

Johnmen ©   (09.10.06 16:49) [31]
тем, что если в хранимку передались правильные параметры, то уже уменьшаются шансы на ошибку вставки, плюс валидацию можно засунуть в саму хранимку, в итоге генерировать новое значение гениратора только при прохождении такой валидации, причем разгружая бизнес-логику клиента ...


 
Rule ©   (2006-10-09 16:58) [34]

Konrads   (09.10.06 16:54) [32]
есть случаи когда "дырки" могут усложнить ошибку анализа ... допустим у нас есть какая-либо таблица, в которую только вставляются данные, а потом используются только для чтения ... часто встречается такая ситуация ... так вот по "дыркам" можно отслеживать где был косяк при вставке, вычислить проблеммные участки, тоесть определить что была какая-то ошибка в работе системы и опираясь на это найти этот косяк ...


 
Rule ©   (2006-10-09 16:59) [35]

Konrads   (09.10.06 16:54) [32]
и чем интенсивнее идет вставка данных и чем больше пользователей это делают, плюс добавить репликацию ... тогда становиться ощутимо


 
Rule ©   (2006-10-09 17:00) [36]

Konrads   (09.10.06 16:54) [32]
учитывая то, что обычно ошибки в таких таблицах обнаруживаются в конце анализа и закрытия какого-либо периода, в таком случае искать ошибку во всем периоде в большом количестве записей тяжело ...


 
Johnmen ©   (2006-10-09 17:02) [37]


> Rule ©   (09.10.06 16:56) [33]


Нет, ты всё же скажи, чем так характерна хранимка в трудной борьбе с дырками.


 
Rule ©   (2006-10-09 17:06) [38]

Johnmen ©   (09.10.06 17:02) [37]
можно в ней провести валидацию, а если используется совместный код, то упрощает взаимопонимание между разработчиками ...


 
Konrads   (2006-10-09 17:18) [39]


> есть случаи когда "дырки" могут усложнить ошибку анализа
> ... допустим у нас есть какая-либо таблица, в которую только
> вставляются данные, а потом используются только для чтения
> ... часто встречается такая ситуация ... так вот по "дыркам"
> можно отслеживать где был косяк при вставке, вычислить проблеммные
> участки, тоесть определить что была какая-то ошибка в работе
> системы и опираясь на это найти этот косяк ...


Если чесно, но лично моё мнение такое:
Делать сколь-либо серьёзный анализ на основе того что появилась "дырка" в таблице в которую толко записываются данные, а поле первичного ключа заполняется триггером от своего собственного генератора - равносильно поиску чёрной кошки в тёмной комнате когда её там нет. Для анализа на мой взгляд надо пользоваться более точными инструментами.


 
Rule ©   (2006-10-09 17:20) [40]

Konrads   (09.10.06 17:18) [39]
нууууууууууууууу, как сказать .... может ты и прав, но мне лично было удобнее искать дырки, в 90 процентах "дырки" указывали на косяк ...


 
Johnmen ©   (2006-10-09 17:23) [41]


> Rule ©   (09.10.06 17:06) [38]


Ничего не понял... Ответ не получил...
Да и ладно. Забьём...


 
Konrads   (2006-10-09 17:26) [42]

и действительно :)


 
atruhin ©   (2006-10-09 17:28) [43]

> [38] Rule ©   (09.10.06 17:06)
> Johnmen ©   (09.10.06 17:02) [37]
> можно в ней провести валидацию,

И почти в 2 раза перегрузить сервер, так как один раз будет проверять хранимка, а второй раз сервер


 
Rule ©   (2006-10-09 17:43) [44]

Johnmen ©   (09.10.06 17:23) [41]
извини, старался :-)


 
Rule ©   (2006-10-09 17:44) [45]

atruhin ©   (09.10.06 17:28) [43]
нуууу в большинстве случаев вставка данных не так часто и происходит, больше производительности падает он неоптимизированых запросов на селект



Страницы: 1 2 вся ветка

Форум: "Базы";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.56 MB
Время: 0.035 c
15-1164474872
Kolan
2006-11-25 20:14
2006.12.17
Где взять иконку чипа?


15-1164650062
Piter
2006-11-27 20:54
2006.12.17
У всех ICQ накрылась?


2-1164702335
Joq
2006-11-28 11:25
2006.12.17
Написание службы


15-1164392601
furyz
2006-11-24 21:23
2006.12.17
Так сяк


2-1164576576
HighLighter
2006-11-27 00:29
2006.12.17
HighLighting





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский