Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Добавление данных в таблицу  [new]
hollo2017
Member

Откуда:
Сообщений: 13
Есть три таблицы
1) с полями: id_1, name1
2) с полями: id_2, name2
3) с полями: id_1, id_2, id_3

id_1 и id_2 инкрементируются автоматически при добавлении name1 и name2 соответственно.
Как добавить в третью таблицу id_1, id_2, зная только name1 и name2(Их мы получаем из TextBox из формы)?

Пробовал много разных вариантов, например так:
INSERT INTO table3(id_1,id_2) VALUES(
	(SELECT id_1; FROM table1; WHERE table1.name1 = VALUES(CAST(ThisForm.Text1.Value AS INT(4)))),
	(SELECT id_2; FROM table2; WHERE table2.name2 = VALUES(CAST(ThisForm.Text2.Value AS INT(4)))))


Но все время synatax error. В чем ошибка?
23 ноя 18, 18:10    [21743240]     Ответить | Цитировать Сообщить модератору
 Re: Добавление данных в таблицу  [new]
asdor
Member

Откуда: Москва
Сообщений: 435
hollo2017,
Извиняйте. Ну просто полный АТАС!!!!

Итак переведите, для себя, что означает
CAST(ThisForm.Text1.Value AS INT(4))

Что за каша в голове?
По человечески, для себя опишите, что хотите. И понятны будут ошибки.
Подсказывать, смысла не вижу, если не найдете причину, бросайте это дело.
23 ноя 18, 19:04    [21743289]     Ответить | Цитировать Сообщить модератору
 Re: Добавление данных в таблицу  [new]
hollo2017
Member

Откуда:
Сообщений: 13
asdor, а если так?
INSERT INTO order (id_t, id_c) ;
   SELECT id_t, id_c FROM transport ,client_service ;
      WHERE client_service.name=ThisForm.Text1.Value AND transport.name=ThisForm.Text2.Value


Пишет что uniqueness of index id_c is violated
23 ноя 18, 22:17    [21743408]     Ответить | Цитировать Сообщить модератору
 Re: Добавление данных в таблицу  [new]
asdor
Member

Откуда: Москва
Сообщений: 435
Ну с типами разобрались.)))
Что у вас главное?
Наверное
hollo2017
Как добавить в третью таблицу id_1, id_2, зная только name1 и name2(Их мы получаем из TextBox из формы)?


1. Вы занимаетесь отладкой, поиском правильного решения.
Уберите запрос с формы. напишите отдельную прг.
Значения ThisForm.TextN.Value передавайте туда как параметр.
Это не повлияет на правильность - неправильность, но существенно упростит проверку.
И вообще, не стоит в запросы передавать прямо контролы формы.
(это не иногда влияет на результат), и существенно ускоряет процесс... и в будущем легче.
После отладки, можно просто метод на форме создать, скопировав туда текст.

2. На начните с простого добавления
INSERT INTO table3((id_t, id_c) VALUES(1,2)

Потом сделайте
INSERT INTO table3((id_t, id_c) VALUES(2,2)

И увидите, что видимо id_c должно быть уникально. (зачем не ясно)

Далее, вы можете увидеть, что хотите добавить, просто выполнив свой запрос на добавление.
 SELECT a.id_t, b.id_c FROM transport a ,client_service b;
      WHERE b.name=param1 AND a.name=param2


Просто делите для начала задачу, на мелкие подзадачи.
В сложных случаях, без этого никак.

Ну и очевидно, что такое решение, может вам наклепать дублей, немеряно.
Мне кажется вас неверный выбор решения. Не понятно что требуется.
24 ноя 18, 12:13    [21743577]     Ответить | Цитировать Сообщить модератору
 Re: Добавление данных в таблицу  [new]
hollo2017
Member

Откуда:
Сообщений: 13
asdor,
Спасибо, разобрался со всем, кроме того, как добавлять текущую дату в таблицу, если задавать как параметр, то ругается, что param1 not found. Есть ли какие-то способы еще?

param1=DATE()

INSERT INTO table1 (id_1, id_2,param1);
SELECT t.id_1, cs.id_2;
FROM transport t,client_service cs;
WHERE cs.name=param1 AND t.name=param2
24 ноя 18, 15:20    [21743688]     Ответить | Цитировать Сообщить модератору
 Re: Добавление данных в таблицу  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1375
hollo2017
asdor,
Спасибо, разобрался со всем, кроме того, как добавлять текущую дату в таблицу, если задавать как параметр, то ругается, что param1 not found. Есть ли какие-то способы еще?

param1=DATE()

INSERT INTO table1 (id_1, id_2,param1);
В таблице есть поле Param1? Сдается мне, что дело совсем не в дате.
25 ноя 18, 13:10    [21744064]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить