|
Не работает код
|
|||
---|---|---|---|
#18+
Подскажите пожалуйста в чём может быть затык? Код в VBA. Я только начинаю программировать. Почему не хочу использовать для форм источник данных как запрос - форма должна показывать только определенные строчки, где фильтром является значение по полю "Станция", которое берется программой из глобальной переменной. Private Sub Form_Load() Dim rsp As Object Dim con As Object Dim stSql As String Set con = Application.CurrentProject.Connection stSql = "SELECT * FROM [tblGoodsAllocation]" stSql = stSql & " WHERE [Станция] = CStr(MyVar) " Set rsp = CreateObject("ADODB.Recordset") rsp.Open stSql If (rsp.EOF) Then ' MsgBox = "Не работает" Else While (Not (rsp.EOF)) Me.Код = rsp.Fields("Код") Me.ОЗМ = rsp.Fields("ОЗМ") Me.Количество= rsp.Fields("Количество") rsp.MoveNext Wend End If rsp.Close Set rsp = Nothing Set con = Nothing End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 17:14 |
|
Не работает код
|
|||
---|---|---|---|
#18+
Забыл написать. Ошибка появляется 3709. Невозможно использование подключения для выполнения операции. Оно закрыто или не допускается в данном контексте. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 17:19 |
|
Не работает код
|
|||
---|---|---|---|
#18+
Admiral67, 1. На какой строке ошибка. 2. Зачем нужно Set con = Application.CurrentProject.Connection, если con потом нигде не используется? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 18:13 |
|
Не работает код
|
|||
---|---|---|---|
#18+
The_Prist, Ошибка возникает на строчке rsp.Open stSql Зачем нужна строчка Set con = Application.CurrentProject.Connection затрудняюсь ответить. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 18:17 |
|
Не работает код
|
|||
---|---|---|---|
#18+
Admiral67, stSql = stSql & " WHERE [Станция] = " & CStr(MyVar) Кстати, что в MyVar? Да и скобки квадратные не нужны вроде бы, т.к. они применяются если в названии поля присутствуют пробелы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 18:38 |
|
Не работает код
|
|||
---|---|---|---|
#18+
Admiral67, вопрос то был скорее риторической. может энтот con использовать надо? Код: vbnet 1.
послесловие: код лучше оформлять а то глаза режет ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 18:41 |
|
Не работает код
|
|||
---|---|---|---|
#18+
капитанская дочкавопрос то был скорее риторической+100 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 19:05 |
|
Не работает код
|
|||
---|---|---|---|
#18+
The_Prist, В MyVar 4 символа - буква и три цирфы. Исправил. Но теперь получаю другую ошибку. Отсутствует значение для одного или нескольких параметров. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 22:10 |
|
Не работает код
|
|||
---|---|---|---|
#18+
Admiral67, А это уже ошибка запроса. Скорее всего неверно указано имя поля. Есть в БД вообще поле с именем Станция? А вообще я еще первым сообщением дал понять, что лучше сразу указывать на какой строке ошибка возникает... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 22:50 |
|
Не работает код
|
|||
---|---|---|---|
#18+
The_Prist, Ошибка возникает на строчке rsp.Open stSql, con Да, разумеется. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 22:52 |
|
Не работает код
|
|||
---|---|---|---|
#18+
nord-woolf, Спасибо. После танцев с бубном дело пошло. Остался вопрос - как в поля формы залить данные из полученной SQL команды? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 23:21 |
|
Не работает код
|
|||
---|---|---|---|
#18+
Ценю тонкий юмор. К сожалению Google не помог Вот что написал (код ниже). Но в форме появляется только первая строка. Просьба подсказать почему? rsp.MoveFirst While Not rsp.EOF For i = 0 To rsp.Fields.Count - 1 Me.Код = rsp.Fields(0) Me.ОЗМ = rsp.Fields(1) Me.Количество = rsp.Fields(2) Me.НомерПаллеты = rsp.Fields(3) Next rsp.MoveNext Wend ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 23:53 |
|
Не работает код
|
|||
---|---|---|---|
#18+
здесь происходит перебор записей: Код: vbnet 1. 2. 3. 4.
все нормально а здесь происходит вывод первых четырех полей столько раз, сколько всего полей в рекордсете: Код: vbnet 1. 2. 3. 4. 5. 6.
это как если написать на заборе какое-нибудь слово, а потом обвести буквы несколько раз. в вашем случае отличие в том, что шрифт от этого жирнее не станет. Admiral67Но в форме появляется только первая строка. Просьба подсказать почему?существует два объяснения: 1) эта строка запись единственная. если бы их было больше, то появлялась бы последняя. 2) эта запись последняя. вы сами в глаза не видели свои данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2014, 00:44 |
|
Не работает код
|
|||
---|---|---|---|
#18+
Antonariy, первая последняя они в сиквеле не нумеруются... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2014, 11:29 |
|
Не работает код
|
|||
---|---|---|---|
#18+
капитанская дочкаAntonariy, первая последняя они в сиквеле не нумеруются...Зато в рекордсете у них порядок есть. В запросе select * from tblGoodsAllocation, происходящем из одной таблицы, записи всегда будут возвращаться в одном и том же порядке в соответствии либо с первичным ключом либо с кластерным индексом, если это mssql. По умолчанию в нем первичный ключ кластерным и является. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2014, 12:33 |
|
Не работает код
|
|||
---|---|---|---|
#18+
Antonariy, ms утверждает: The order in which rows are returned in a result set are not guaranteed unless an ORDER BY clause is specified. mysql пишет: If ORDER BY is not given, the rows are returned in whatever order the system finds fastest to produce. умные люди проверяют на деле: Clearly you cannot assume that your results are ordered unless you explicitly use ORDER BY clause. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2014, 12:51 |
|
Не работает код
|
|||
---|---|---|---|
#18+
капитанская дочкаAntonariy, ms утверждает: The order in which rows are returned in a result set are not guaranteed unless an ORDER BY clause is specified. mysql пишет: If ORDER BY is not given, the rows are returned in whatever order the system finds fastest to produce. Мне все это известно. капитанская дочкаумные люди проверяют на деле: Clearly you cannot assume that your results are ordered unless you explicitly use ORDER BY clause. Умные люди умеют настраивать таблицы и подбирать данные так, чтобы утверждения подтверждались. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2014, 15:27 |
|
Не работает код
|
|||
---|---|---|---|
#18+
Antonariyкапитанская дочкаAntonariy, ms утверждает: The order in which rows are returned in a result set are not guaranteed unless an ORDER BY clause is specified. mysql пишет: If ORDER BY is not given, the rows are returned in whatever order the system finds fastest to produce. Мне все это известно. тогда мне не понятно почему: AntonariyВ запросе select * from tblGoodsAllocation, происходящем из одной таблицы, записи всегда будут возвращаться в одном и том же порядке в соответствии либо с первичным ключом либо с кластерным индексом, если это mssql. По умолчанию в нем первичный ключ кластерным и является Antonariyкапитанская дочкаумные люди проверяют на деле: Clearly you cannot assume that your results are ordered unless you explicitly use ORDER BY clause. Умные люди умеют настраивать таблицы и подбирать данные так, чтобы утверждения подтверждались. фраза из разряда: умные люди - умные люди. по существу есть что возразить? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2014, 15:41 |
|
Не работает код
|
|||
---|---|---|---|
#18+
капитанская дочкатогда мне не понятно почему:По опыту. Селектор * из сферической таблицы будет выдавать записи в одном и том же порядке, хоть тресни. Как видим, нужно немного постараться, чтобы директива "не гарантирует" стала выполняться: Clearly you cannot assume that your results are ordered unless you explicitly use ORDER BY clause. Создать индекс по рандомному полю и не включить его в выборку. А теперь фокус-покус: записи будут выводиться не по порядку 1,2,3, а в случайном порядке, но в одном и том же . Сам запусти этот пример, сделай десяток выборок SELECT TOP 100 ID FROM Data.WideTable и найди хоть одно отличие. У меня порядок был одним и тем же: 856 9506 3014 7874 2443 "Не гарантирует" на самом деле означает то, что даже десять одинаковых селектов могут каждый раз возвращать данные в разном порядке, соответственно и top x будет разным. Но для этого нужно еще и с джойнами помудрить. капитанская дочкафраза из разряда: умные люди - умные люди. по существу есть что возразить?А я разве возражаю? Не гарантирует, истинная правда. Вот только в случае ТСа условия для "не гарантирует" отсутствуют. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2014, 16:08 |
|
Не работает код
|
|||
---|---|---|---|
#18+
Antonariy, все так (почти) но есть одно НО (или больше) а именно неокрепшему мозгу вредно говорить что порядок есть даже если с оговорками если не ошибаюсь на этом курсе нам рассказывали что принцип по которому возращаются кортежи есть чистой воды математика и эти алгоритмы улучшаются от версии к версии. поэтому "не гарантирует" значит что полагаться на авось не надо. на практике было у меня так что 2010 и 2012 возвращали в разном порядке из одной и той же таблицы для одного и того же запроса. было и такое что два идентичных сервера с идентичными базами давали разный порядок. по мне когда производитель говорит что сувать пальцы нельзя значит нельзя. но не каждый профессионал пользователь читает инструкции или относится к ним серьезно. на знаю правда теперь какое это все отношение имеет к делу...спор ради спора или даже меряние длины пис глубины знанний тем не менее тс стоит научится оформлять код. описывать свои задачи четче. с вопросами по access обращаться в соответствующий раздел форума. и усвоить что данные из базы будут возвращаться неупорядоченными пока явно не будет использоваться order by о последнем вопросе тс. на кой тут цикл с i ежели он не используется? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
тогда жу так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
этот код пробегается по всем записям recordset и каждую итерацию присваивает контролам значения текущей записи. по сему контролы отображают последнюю записать recordset. тс видимо хочет выводить список. тогда и пользовать надо список или подчиненую форму. Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2014, 18:37 |
|
|
start [/forum/topic.php?fid=60&msg=38734325&tid=2156222]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
138ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 297ms |
total: | 518ms |
0 / 0 |