Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: обновление поля Добавлено: 08.07.07 19:28  

Автор вопроса:  Илья
Доброго!
есть трудность
запрос на обновление поля в таблице при условии измененности поля другой таблицы:

UPDATE Таблица2 SET Число1=1
WHERE Таблица1.Слово is not null

не срабатывает. Помогите разобраться пожалуйста

Ответить

  Ответы Всего ответов: 26  

Номер ответа: 1
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #1 Добавлено: 08.07.07 21:44
UPDATE Таблица1, Таблица2 SET Таблица2.Число1=1
WHERE Таблица1.Слово is not null

Ответить

Номер ответа: 2
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #2 Добавлено: 08.07.07 22:28
Большое спасибо, попроббовал, запрос выплдняется, но обновления не происходит. Может дело в том, что поле в Таблице1 - текстовое, во Таблице2 - числовое, т.е. смысл в том, что вводится слово в поле Таблицы1, запускается запрос и в поле Таблицы2 воодится "1"

Ответить

Номер ответа: 3
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #3 Добавлено: 08.07.07 22:38
  Была проблема синтаксиса, ее-то решить можно, а что конкретно должен сделать этот запрос с неизвестными мне типами данных, их свойствами, и состоянием данных в базе остается только догадываться. Конкретизируй.

Ответить

Номер ответа: 4
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #4 Добавлено: 09.07.07 09:11
Конкретизирую:
две таблицы
Таблица1 - в поле Слово заносятся слова
Таблица2 - в поле Число заносятся цифры "1" или "0". Соответственно поле Слово - текстовое, поле Число - числовое.
Цель запроса - после введения нескольких слов в Таблица1.Слово обновить Таблица2.Число. При этом количество "1" в Таблица2.Число должно быть равно кол-ву слов в Таблица1.Слово
Сразу скажу, что этот запрос я пробовал и на связаных (один ко многим) таблицам, и на не связанных - один результат. Запрос выполняется, обновление не происходит.

Ответить

Номер ответа: 5
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #5 Добавлено: 09.07.07 09:26
Еще раз попробовал запрос
UPDATE Таблица1, Таблица2 SET Таблица2.Число1=1
WHERE Таблица1.Слово is not null
Выяснил следующее:
если в таблице2 в поле Число стоит "0", то запрос не выполняется, если не стоит - выполняется. Но при этом проставляется только одна "1", не зависимо от того, сколько слов введено в Таблица1.Слово. Хотя при исполнении запроса пишется , что будут обновлено именно то количество записей, сколько было введено слов в Таблица1.Слово

Ответить

Номер ответа: 6
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #6 Добавлено: 09.07.07 18:18
сделал тот же запрос в конструкторе
вот что получилось
UPDATE Таблица1 INNER JOIN Таблица2 ON Таблица1.КодСлова=Таблица2.КодСлова SET Таблица2.Число1 = 1
WHERE (((Таблица1.Слово1) Is Not Null));

та же ерунда - запрос выполняется - поле Число1 не обновляется

Ответить

Номер ответа: 7
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #7 Добавлено: 09.07.07 20:33
UPDATE Таблица1, Таблица2 SET Таблица2.Число1=1
WHERE (Таблица1.Слово is not null) AND (Таблица1.КодСлова=Таблица2.КодСлова);

Логика этого запроса на изменение подразумевает что:

1. В [Таблица2] есть поле [КодСлова] и ВСЕ строки этого поля содержат данные.
2. В [Таблица1] есть поле [КодСлова] связанное с [Таблица2].[КодСлова] и [Таблица1].[Слово]заполнено частично.
3. Автор не расчитывает на то, что будет выполнен запрос на добавление. Таблица2 содержит все данные в КодСлова.

Попробуй сначала SELECT чтобы увидеть какие данные будут обновлены.
SELECT * FROM Таблица1, Таблица2
WHERE (Таблица1.Слово is not null) AND (Таблица1.Слово = Таблица2.Слово);

P.S.
У тебя Таблица2 случайно не пуста?

Ответить

Номер ответа: 8
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #8 Добавлено: 09.07.07 21:24
таблица2 пустая естественно.
Смысл в том, что пользователь должен вводить в Таблицу1 слова, потом запускать запрос на обновление и в аналогичных полях (изначально пустых) Таблица2 должны проставляться "1" столько, сколько будет слов в Таблица1.
Можно было бы просто посчитать количество записей в Таблица1, но потом могут возникнуть проблемы с сохранением результатов.

Ответить

Номер ответа: 9
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #9 Добавлено: 09.07.07 21:48
таблица2 пустая естественно

Я почему-то так и подумал.
Тогда ты выбрал не тот тип запроса.
Нужно INSERT INTO.

Ответить

Номер ответа: 10
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #10 Добавлено: 09.07.07 21:58
INSERT INTO Таблица2 (Слово, Число1)
SELECT Таблица1.Слово, 1
FROM Таблица1 WHERE Таблица1.Слово Is Not Null;

Ответить

Номер ответа: 11
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #11 Добавлено: 09.07.07 22:51
Спасибо, наверное правильное будет так:
INSERT INTO Таблица2 (Число1)
SELECT Таблица1.Слово1
FROM Таблица1 WHERE Таблица1.Слово1 Is Not Null;

однако в этом случае выдается транспорант:
"Нарушение уникальности ключа"

Ответить

Номер ответа: 12
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #12 Добавлено: 09.07.07 23:05
Ээээ...
Бородатый анекдот:
  - Можно-ли натянуть кондом на глобус?
  - А что такое глобус?
  - Вот с этого мы и начнем урок географии.
...
Для какой надобности в таблице2 есть индексированные поля? Для чего вообще таблица2?
Какие в ней еще есть поля?
Почему
потом могут возникнуть проблемы с сохранением результатов


Ответить

Номер ответа: 13
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #13 Добавлено: 09.07.07 23:09
INSERT INTO Таблица2 (Число1) SELECT 1

Ответить

Номер ответа: 14
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #14 Добавлено: 09.07.07 23:40
Хороший анекдот!

написал так

INSERT INTO Таблица2 ( Число1 )
SELECT Таблица1.Слово1
FROM Таблица1
WHERE Таблица1.Слово1 Is Not Null

все исправилось, однако естественно выбирает записи из Таблица1.Слово1 и копирует в Таблица2.Число1
а надо заменить слова на "1"
Чето туплю, куда здесь values (1) вставить?
может всеж таки дело в ограничениях, насколько помню есть ограничения в преобразовании между текстовым и числовым полем, ага вот нашел: "Текст может включать только числа и допустимые разделители целой и дробной части для числовых значений и денежных единиц. Число знаков в поле с типом данных «Текстовый» не должно превышать соответствующий размер поля, заданный для типа данных «Числовой»"? Да проблемы будут с пользователем, ему надо чтобы все наглядно было...

Ответить

Номер ответа: 15
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #15 Добавлено: 09.07.07 23:53
Подожди, я уже ни чего не понимаю.
Итак:
1. Таблица2 пуста и в ней только одно поле [Число1].
Тогда:
 INSERT INTO Таблица2 (Число)
 SELECT 1 FROM Таблица1
 WHERE Таблица1.Слово Is Not Null
2. Таблица2 пуста и в ней несколько полей названных также как в таблице1.
Тогда:
 INSERT INTO Таблица2 (Число,Слово,КодСлова)
 SELECT 1,Слово,КодСлова FROM Таблица1
 WHERE Таблица1.Слово Is Not Null

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам