|
|
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
В моей старой базе данных (.mdb) был опрос, который использовал параметр из текушей Формы: [quote] SELECT DISTINCT a.SubAsset FROM Container AS a LEFT JOIN Container AS b ON a.SubAsset=b.MainAsset WHERE a.MainAsset=[Forms].[Assets].[Asset #] UNION SELECT DISTINCT b.SubAsset FROM Container AS a LEFT JOIN Container AS b ON a.SubAsset=b.MainAsset WHERE a.MainAsset=[Forms].[Assets].[Asset #]; [/quote] Сейчас создаю аналогичную базу для SQL Servera в проекте (.adp) и обнаружил, что SQL Server не поддерживает команду UNION. Ну ладно, попробую как нибудь заменить её. А вот параметр из формуляра a.MainAsset=[Forms].[Assets].[Asset #] мой опрос почему-то не читает. Кто подскажет как мне использоват в WHERE данные TeхtBoхa из Формуляра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 12:58:47 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
автор обнаружил, что SQL Server не поддерживает команду UNION. ДОКТОРА - СКОРЕЕ автор мой опрос почему-то не читает итить - может запрос т.е. хранимая процедура ? поищи по конфе - Latuk цать раз обьяснял как параметр передать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 13:33:32 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
Что-то не нашёл эту тему на форуме. Может кто подскажет как считать правильно параметр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 14:55:15 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
Сервер ничего не знает ни о каком из объектов VBA клиента А значит у табе два пути 1)либо динамически по какому либо событию (например после обновления TeхtBoхa) динамически сгенерить строку запроса в которой заменить [Forms].[Assets].[Asset #] на конкретное число при этом не забыть если это дробное или дата/время привести к виду понятному серверу 2)либо создать на сервере ХП-ку которой передать значение контрола в качестве параметра Механизм передачи параметра может быть разным все зависит от того какому именно контролу источник и в каких обстаятельствах PS в применении DISTINCT не необходимости если UNION без ALL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 15:28:43 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
Попробовал в процедуре Current задеркларировать переменную Asset_Nr, которая считывается с TextBox "Asset" формы "Assets1": [quote] Dim Asset_Nr As Integer Asset_Nr = Me.AssetNr [/quote] Потом попробовал внести эту переменную в пробный запрос: [quote] SELECT SubAsset FROM dbo.Container a WHERE (MainAsset = & Str(Asset_Nr)) [/quote] сообщает, что конвертация типа данных не правильна. Пробовал ещё кучу вариантов и ни фига. Подкажите мне наглядней плиз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 16:30:00 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
Latuk - написал бы FAQ - после замены DAO--->ADO самый топовый вопрос! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 16:30:23 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
Как правильно задекларировать переменную, которая будет использоваться в запросе? Я сделал событие для ТекстБокса, откуда мне требуется параметр: Private Sub AssetNr_AfterUpdate() Dim Asset_Nr As String Asset_Nr = Str(Me.AssetNr) End Sub Потом не знаю как использовать переменную Asset_Nr в запросе: SELECT SubAsset FROM dbo.Container a WHERE (MainAsset = ?????) Пробовал просто вставлять на место вопороситьных знаков и по другому, но постоянно получаю сообщение: Syntax error converting varchar 'Asset_Nr' to a column of datatype int ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2004, 13:50:04 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
http://hiprog.com/access/article.asp?id=370 Ты должен собрать строку запроса в которой значение Me.AssetNr должно быть вписанно в виде константы причем если это строковая константа то она должна быть заключена в апострофы из ошибки видно что строка содержащаяся в текстбоксе не можнт быть переведена в инт скорее всего она пустая эту ситуацию надо обработать например так SQLStr="SELECT SubAsset FROM dbo.Container " & iif(IsNull(Me.AssetNr),"","WHERE MainAsset = " & Me.AssetNr) MyCombo.RowSourse = SQLStr еще можно обработать случай ввода нечислового или не целого значения в результате выполнения RowSourse поля со списком должно содержать что-то типа SELECT SubAsset FROM dbo.Container WHERE MainAsset = 25 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2004, 14:27:55 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
Latukhttp://hiprog.com/access/article.asp?id=370 Ты должен собрать строку запроса в которой значение Me.AssetNr должно быть вписанно в виде константы причем если это строковая константа то она должна быть заключена в апострофы из ошибки видно что строка содержащаяся в текстбоксе не можнт быть переведена в инт скорее всего она пустая эту ситуацию надо обработать например так SQLStr="SELECT SubAsset FROM dbo.Container " & iif(IsNull(Me.AssetNr),"","WHERE MainAsset = " & Me.AssetNr) MyCombo.RowSourse = SQLStr еще можно обработать случай ввода нечислового или не целого значения в результате выполнения RowSourse поля со списком должно содержать что-то типа SELECT SubAsset FROM dbo.Container WHERE MainAsset = 25 Я уже совсем запутался. Я ещё никогда не делал проекта(.adp) и поэтому мне не совсем понятно. То что ты посоветовал куда мне вставить, в событие AfterUpdate текстбокса? Если так, то мне точно не всё понятно. команда SELECT SubAsset FROM dbo.Container " & IIf(IsNull(Me.AssetNr), "", "WHERE MainAsset = " & Me.AssetNr) выдаст мне весь список СубАссетс, в то время как мне нужно только значение текстбокса. и что такое MyCombo? Не мог бы мне подробней написать плиз? Я ведь не профи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2004, 15:36:19 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
Для того чтобы понять как работает в событие после обновления текстбокса вставь для начала Private Sub ТвойТекстбокс_AfterUpdate() ТвойКомбобокс.RowSource = "SELECT SubAsset FROM dbo.Container WHERE MainAsset = 25" End Sub где 25 какое либо число значение которого может приобретать текстбокс при изменении значения текстбокса сработает код и источик комбо будет отфильтрован MainAsset = 25 Работает? пойдем дальше замени константу на значение текстбокса при этом когда будеш вводить значение вводи только целое число получится динамически собранный запрос Private Sub ТвойТекстбокс_AfterUpdate() ТвойКомбобокс.RowSource = "SELECT SubAsset FROM dbo.Container WHERE MainAsset = " & ТвойТекстбокс End Sub Работает? еще раз прочитай ссылку это вариант №2 http://hiprog.com/access/article.asp?id=370 возможно в твоем случае будет проще с 3-м при усложнении запроса контролируй его правильность просматривая результат выражения которым ты заполняеш ТвойКомбобокс.RowSource в конструкторе запросов а лучше наоборот нарисуй запрос в конструкторе применяя константы а потом замени их в тексте на сборку " & ТвойТекстбокс & " ... PS UNION в конструкторе не потдерживается но ты можеш просмотреть каждую из частей запроса отдельно выделив ее и правой кнопкой мыши меню-конструктор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2004, 16:08:13 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
Я не застал твоё последнее сообщение потому что уехал в отпуск. Private Sub ТвойТекстбокс_AfterUpdate() ТвойКомбобокс.RowSource = "SELECT SubAsset FROM dbo.Container WHERE MainAsset = " & ТвойТекстбокс End Sub Я никак не могу понять что ты подразуемеваешь под ТвойКомбобокс? У меня нет такого Комбобокса. Нужно ли мне создать новый КомбоБокс под таким названием? Могу ли я сохранить значение перемонной из ТекстБокса и использоватъ как критерий отбора в команде "WHERE" ногого запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 12:18:13 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
>что ты подразуемеваешь под ТвойКомбобокс вместо "ТвойКомбобокс" в коде вставляй имя контрола типа поле со списком из своей формы,источник которого собираешся изменить. вместо "ТвойТекстбокс" в коде вставляй имя контрола из своей формы значение которого собираешся использовать как параметр запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 12:28:27 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
2 magoga: Держи код, переделай под себя и не заморачивайся Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 12:41:57 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
Я уже достал вас всех. Но у меня ни фига не работает. Создал КомбоБокс "MyCombo" Создал событие для ТекстБокса "AssetNr": Private Sub AssetNr_AfterUpdate() MyCombo.RowSource = "SELECT SubAsset FROM dbo.Container WHERE MainAsset = " & AssetNr End Sub Запускаю, но в КомбоБоксе ничего нет. Готов уже разнести свой копм на части. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 16:32:07 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
После запуска в комбо ничего и не должно быть будет только после обновления AssetNr а чтобы до этого там че нибудь было надо туды ченить(SELECT SubAsset FROM dbo.Container) вставить на запуске (Open,load итп) или просто в конструкторе (така следить чтобы туды мусор не попал ежели ты после смены источника захочеш форму в конструкторе поюзать) PS я так понял AssetNr целое число Не забудь обработать случаи когда в AssetNr будет нецелое число,NULL,'' или еще какаянибудь чуш ато у табе не запрос получится а какаято ерунда :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 20:54:45 |
|
||
|
Данные из Формуляра для Опроса в проекте (.adp)
|
|||
|---|---|---|---|
|
#18+
Спасибо за помомщь. Теперь работает. В данном случае мы "отправляем" данные в Листбокс из Текстбокса. А всё же, как создать переменную из текущего значения Текстбокса, значение которой я мог бы использовать во "View"? И чем можно заменить команду UNION? Мне нужно чтобы лист ответа запроса был с одним столбцом. Вот мой запрос из старой программы в .mdb: SELECT DISTINCT a.SubAsset FROM Container AS a LEFT JOIN Container AS b ON a.SubAsset=b.MainAsset WHERE a.MainAsset=[Forms].[Assets].[Asset #] UNION SELECT DISTINCT b.SubAsset FROM Container AS a LEFT JOIN Container AS b ON a.SubAsset=b.MainAsset WHERE a.MainAsset=[Forms].[Assets].[Asset #]; Заранее благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2004, 12:25:55 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32653135&tid=1671972]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
110ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 208ms |
| total: | 430ms |

| 0 / 0 |
