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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переписать sqlзапрос на vb, как правильно переписать sqlзапрос на vb 
:(
    Опции темы
raina
Дата 4.2.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



есть три запроса ,подскажите как правильно переписать их в vb.
1. для расчета остатка
Код

SELECT предприятие.код_пред, предприятие.Остаток, предприятие.Дата_ост
FROM предприятие
WHERE (((предприятие.код_пред)=Forms![печать актов]!код_пред) And ((предприятие.Дата_ост)<=Forms![печать актов]!сверки_с));
если пусто, должно равняться 0.
2. для расчета прихода
Код

SELECT DISTINCTROW приход.код_пред, Sum(приход.сумма_с_ндс) AS [Sum-сумма_с_ндс], приход.дата_прих
FROM приход
GROUP BY приход.код_пред, приход.дата_прих
HAVING (((приход.код_пред)=[Forms]![печать актов]![код_пред]) AND ((приход.дата_прих)<[Forms]![печать актов]![сверки_с]));

3. для расчета прихода
Код

SELECT DISTINCTROW расход.код_пред, Sum(расход.сумма_с_ндс) AS [Sum-сумма_с_ндс], расход.дата_расх
FROM расход
GROUP BY расход.код_пред, расход.дата_расх
HAVING (((расход.код_пред)=[Forms]![печать актов]![код_пред]) AND ((расход.дата_расх)<[Forms]![печать актов]![сверки_с]));

4. как сослаться на значение запроса, для дальнейших вычислений?
5. где можно скачать русифицированную версию справочника по vb.

Это сообщение отредактировал(а) Akina - 5.2.2006, 00:27
PM MAIL   Вверх
Akina
Дата 5.2.2006, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



1,2,3 - а в чем, собственно, проблема?
4. "Значение запроса" - понятие несуществующее. Запрос на выборку возвращает набор записей (возможно, пустой). Его следует получить в рекордсет и обрабатывать программно.
5. Какой именно справочник нужен?

И уточните - вопрос по VB или по VBA?


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

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


Шустрый
*


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

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



Цитата(raina @ 4.2.2006, 22:17 Найти цитируемый пост)

есть три запроса ,подскажите как правильно переписать их в vb.


На данной страничке форума есть тема " Запрос в VBA ", посмотри ее, помоему, это будет тебе ответом.
Там дан пример.
PM MAIL   Вверх
Papirus
Дата 6.2.2006, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

1,2,3

Dim strSQL As String, rs As DAO.Recordset

strSQL = "SELECT предприятие.код_пред, предприятие.Остаток, предприятие.Дата_ост "
strSQL = strSQL & "FROM предприятие "
strSQL = strSQL & "WHERE (((предприятие.код_пред)=Forms![печать актов]!код_пред) And "
strSQL = strSQL & "((предприятие.Дата_ост)<=Forms![печать актов]!сверки_с));"

4
Set rs  = CurrentDB.OpenRecordset(strSQL)
debug.print rs.Fields("Остаток")


Цитата(raina @ 4.2.2006, 22:17 Найти цитируемый пост)

если пусто, должно равняться 0.

IIF(IsNull(предприятие.Остаток),0,предприятие.Остаток)
PM MAIL ICQ   Вверх
raina
Дата 7.2.2006, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Papirus, сделала все как вы сказали, а результат не получился. smile 1,2,3 пункты переписала, а пункт 4 не работает: объявила переменную ost для остатка, пытаюсь проверить результат через msgbox, почему то нечего не выдает.
PM MAIL   Вверх
Papirus
Дата 7.2.2006, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Можно попробовать получить количество записей, возвращаемых рекордсетом

MsgBox rs.RecordCount

Очень может быть, что записей соответствующих условию просто нет. Можно еще проверить работу самого запроса в конструкторе. Подставить туда конкретные значения и посмотреть. Потом, те значения, которые возвращают что-то подставить в strSQL и снова проверить уже в программе. Следует иметь ввиду также, что рекордсет может возращать не одну запись... А также дата частенько может быть "камнем преткновения". С ней не все так просто как хотелось бы. В программе и в конструкторе запросов она может работать по разному.
Лучше всего, имхо, подставлять в запрос не ссылки на поля формы, а сразу конкретные значения:

Код

Dim strSQL As String, rs As DAO.Recordset

strSQL = "SELECT предприятие.код_пред, предприятие.Остаток, предприятие.Дата_ост "
strSQL = strSQL & "FROM предприятие "
strSQL = strSQL & "WHERE предприятие.код_пред = " & Forms![печать актов]!код_пред) 
strSQL = strSQL & " And предприятие.Дата_ост <= " & Format(Forms![печать актов]!сверки_с, "mm\/dd\/yy") 




Еще советую почитать вот это!

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


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


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

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



Цитата(raina @ 7.2.2006, 02:44 Найти цитируемый пост)

объявила переменную ost для остатка, пытаюсь проверить результат через msgbox

а как в нее заносился результат?


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

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.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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