Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RecordSet. Запрос и сортировка 
:(
    Опции темы
Vigor06
Дата 14.6.2011, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.6.2011

Репутация: нет
Всего: нет



C помощью RecordSet'a беру данные из таблицы и по эти данным нужно будет получить некоторое значение. Но вот не могу необходимые данные для формулы выцепить
а. РекордСет не хочет сортироваться по одному из столбцов
б. Не хочет выполнять запрос(хотя он может и хочет,но я криво пишу)

Вот код по 2 проблеме 
код VBA
Код

Dim KOV As Single, C As Single, NumPlus As Integer, db As Database, rstemp As Recordset, ItogTur As Recordset, masotv() As Integer
CurrentDb.Execute "UPDATE tblTemp, Турнир, Команда SET tblTemp.КодКом = Команда.КодКом, tblTemp.КодТур = Турнир.Код" & _
" WHERE tblTemp.Команда=Команда.Название And tblTemp.Турнир=Турнир.Название"
CurrentDb.Execute "INSERT INTO Турниры (КолВопр, Команда, Турнир,ДатаТур)SELECT tblTemp.КолВопр, tblTemp.КодКом, tblTemp.КодТур,tblTemp.ДатаТур" & _
" FROM tblTemp"
Set db = CurrentDb
Set ItogTur = db.OpenRecordset("tblTemp")
ItogTur.MoveLast
Kolkom = ItogTur.RecordCount
ReDim masotv(Kolkom)
ItogTur.MoveFirst
turName = ItogTur.Fields(1).Value
CurrentDb.Execute "select Турнир.КолВопр as RazmTur FROM Турнир WHERE turName=Турнир.Название" ' не работает
ItogTur.Sort = "КолВопр" ' не работает
kolotv = 0
Do While Not ItogTur.EOF
otv = ItogTur.Fields(2).Value
kolotv = kolotv + otv
ItogTur.MoveNext
Loop


Буду очень благодарен за помощь
PM MAIL   Вверх
Woodlin
Дата 15.6.2011, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 15.7.2009
Где: Челябинская облас ть, г. Пласт

Репутация: 1
Всего: 1



Vigor06, когда используете Sort надо открывать второй рекордсет:
Код

Private Sub Кнопка4_Click()
Dim Me_Rst As Recordset
Dim Me_Rst_Sort As Recordset

Set Me_Rst = Me.Подчиненная.Form.Recordset

With Me_Rst
    Me_Rst.Sort = "Код"
    Set Me_Rst_Sort = .OpenRecordset
    Set Me.Подчиненная.Form.Recordset = Me_Rst_Sort
End With
'Me_Rst.Close
End Sub
 
На мой взгляд Вам лучше написать запрос, отсортировать его как надо, а потом используя его как источник записей открыть рекордсет.


может попробовать так:
Код

... WHERE Турнир.Название='" & turName & "'"


Это сообщение отредактировал(а) Woodlin - 15.6.2011, 08:36
PM MAIL ICQ   Вверх
Vigor06
Дата 15.6.2011, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.6.2011

Репутация: нет
Всего: нет



Woodlin, насчет сортировки--отличная идея,спасибо)))А вот насчет запроса....оказывается CurrentDb.Execute не предназначен для выборок (запросы Select)
Надо как то по другому придумывать
И вот еще запрос не хочет работать:

 
Код
CurrentDb.Execute "Select Команда.Название,Команда.Рейтинг into TblTemp3 from Команда Where Команда.Название=tblTemp.Команда "


причем дело в  
Код
Where Команда.Название=tblTemp.Команда
, ибо без него работает. Но условие это необходимо.
Надо тоже как то побеждать это дело((

Это сообщение отредактировал(а) Vigor06 - 15.6.2011, 09:18
PM MAIL   Вверх
Akina
Дата 15.6.2011, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Vigor06 @  15.6.2011,  10:17 Найти цитируемый пост)
оказывается CurrentDb.Execute не предназначен для выборок (запросы Select)

Это неверно.
А вот то, что он не может (просто не умеет) вернуть результат выборки - это верно.

Цитата(Vigor06 @  15.6.2011,  10:17 Найти цитируемый пост)
причем дело в  
Код

Where Команда.Название=tblTemp.Команда

, ибо без него работает. Но условие это необходимо.

1) Отвыкайте использовать кириллицу. Или по крайней мере берите всю кириллицу в квадратные скобки.
2) Отвыкайте от составления строки запроса в момент вызова, пока не научитесь писАть их с закрытыми глазами. Используйте предварительную сборку запроса в строковой переменной:
Код

strSQL = "select ..."
CurrentDb.Execute strSQL

Тогда после сборки строки, но до её выполнения можно вывести полученное в msgbox или в окно отладки и понять, где накосячено.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Woodlin
Дата 15.6.2011, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 15.7.2009
Где: Челябинская облас ть, г. Пласт

Репутация: 1
Всего: 1



Vigor06, 
Цитата(Vigor06 @  15.6.2011,  12:17 Найти цитируемый пост)
А вот насчет запроса....оказывается CurrentDb.Execute не предназначен для выборок (запросы Select)

Код

Dim Str_ItogTur  as String
Dim ItogTur As Recordset

Str_ItogTur= "Select tblTemp.* From tblTemp Order By КолВопр"
Set ItogTur = CurrentDb.OpenRecordset(Str_ItogTur )




Это сообщение отредактировал(а) Woodlin - 17.6.2011, 05:49
PM MAIL ICQ   Вверх
Vigor06
Дата 15.6.2011, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.6.2011

Репутация: нет
Всего: нет



Цитата(Akina @ 15.6.2011,  10:03)


Код

strSQL = "select ..."
CurrentDb.Execute strSQL

Тогда после сборки строки, но до её выполнения можно вывести полученное в msgbox или в окно отладки и понять, где накосячено.

Создав запрос в контрукторе,понял,что он ругается на tblTemp.Команда
Что странно,ведь открыв таблицу tblTemp видим следующую картину


Это сообщение отредактировал(а) Vigor06 - 15.6.2011, 10:23

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  Screenshot_317.jpg 69,56 Kb
PM MAIL   Вверх
Akina
Дата 15.6.2011, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Vigor06 @  15.6.2011,  11:18 Найти цитируемый пост)
Создав запрос в контрукторе,понял,что он ругается на tblTemp.Команда
Что странно,ведь открыв таблицу tblTemp видим следующую картину

Вовсе не странно. Вы разницу между именем таблицы/поля и содержимым этого поля в определённой записи этой таблицы понять можете? 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Vigor06
Дата 15.6.2011, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.6.2011

Репутация: нет
Всего: нет



Цитата(Akina @ 15.6.2011,  11:16)
Цитата(Vigor06 @  15.6.2011,  11:18 Найти цитируемый пост)
Создав запрос в контрукторе,понял,что он ругается на tblTemp.Команда
Что странно,ведь открыв таблицу tblTemp видим следующую картину

Вовсе не странно. Вы разницу между именем таблицы/поля и содержимым этого поля в определённой записи этой таблицы понять можете?

Могу. Но разве я этим запросом не выбираю рейтинги и названия тех команд,которые есть и в таблице Команды,и в таблице tblTemp?
И чем это отличается от работающего кода 
Код

CurrentDb.Execute "UPDATE tblTemp, Турнир, Команда SET tblTemp.КодКом = Команда.КодКом, tblTemp.КодТур = Турнир.Код" & _
" WHERE tblTemp.Команда=Команда.Название And tblTemp.Турнир=Турнир.Название"

PM MAIL   Вверх
Akina
Дата 15.6.2011, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Vigor06, либо Вы выполняете данные выше рекомендации и показываете ТОЧНОЕ значение переменной strSQL, при выполнении которого возникает ошибка, либо пусть кто-то другой занимается этой проблемой.
PS. Это касается и "работающего кода".
PPS. А ещё лучше - прочтите закреплённую тему форума и выполните данные ТАМ рекомендации.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Akina
Дата 16.6.2011, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Модератор: Сообщение Woodlin восстановлено.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.