|
|
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
Всем привет! Есть 2 таблицы (источник и приемник данных), открытые в своих датасетах. Название полей и их дельфовые типы из датасетов я получать умею :) Составляю запрос по переносу данных из первой во вторую таблицу. Как перед инсертом проверить, что в поле принимающей таблицы я буду писать совместимое по типу значение из исходной таблицы? К примеру, что в интеджер нельзя писать флоат, в флоат нельзя писать стринг, в стринг можно писать и интеджер и флоат... Мне в голову приходит только 1 более менее толковое решения: построить матрицу типов по вертикали и горизонтали, а на их пересечении признак совместимости (вертикального типа с горизонтальным). Может у кого то есть какое то более правильное или уже готовое решение? Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 12:02 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
filllК примеру, что в интеджер нельзя писать флоат, в флоат нельзя писать стринг, в стринг можно писать и интеджер и флоат... Какая странная у тебя таблица... Но это ладно, проверка - полбеды. Как ты само преобразование-то типов будешь делать? Только не говори, что x.value = y.value, это было бы уже совсем тупо. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 12:11 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, мне только проверка нужна. если пользователь хочет из источника колонку №3 (стринг) запихнуть в колонку принимающей таблицы №2 (инт) то ругнуться и не выполнять инсерт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 12:18 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
filllМожет у кого то есть какое то более правильное или уже готовое решение? Лично я делаю так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Многа букафф, зато абсолютная надёжность. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 12:18 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov спасибо. не поспоришь. надежно. Но как то долго тип с типом сравнивать. Если TargetField.DataType - стринг, который может принять практически все, и интеджер и дататайм и еще многие типы... то много кода получится. Наверно нарисую я матрицу совместимости. А может для каждого известного типа список совместимых типов и буду счастлив... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 12:37 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
filllто много кода получится. Во-первых, не так уж и много. Типов данных реально мало. Во-вторых, ты всерьёз боишься стереть пальцы?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 12:39 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Не, не боюсь. Просто думал, что есть какое то изящное решение или кто-то добрый поделится уже готовой процедуркой, у которой на входе 2 типа, а на выходе Тру или Фолсе :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 12:42 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
А что если StringList типа: I=FC F=C ..... C - string I - Integer F - Float а присваивать, через Variant уже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 12:46 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
zinpub Спасибо. Именно в эту сторону я сейчас и смотрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 12:48 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
Идиотский вопрос - а нафига ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 13:20 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
schi что нафига? проверять совместимость типов или смотреть в сторону стринглиста? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 14:10 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. А вообще я не понимаю, почему нельзя преобразовать '5' в 5, а 7.1 в 7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 14:35 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Ну array или valuelist - эт непринципиально, а 7.1 в 7 - может быть неверно для логики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 14:46 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
filllschi что нафига? проверять совместимость типов или смотреть в сторону стринглиста? Проверять совместимость типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 15:02 |
|
||
|
проверить совместимость типов полей перед Insert
|
|||
|---|---|---|---|
|
#18+
zinpubНу array или valuelist - эт непринципиально,Угу. Кроме скорости поиска ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 15:06 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39709766&tid=2040348]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
193ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 247ms |
| total: | 567ms |

| 0 / 0 |
