Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток!)Помогите пожалуйста!. Я делаю выборку в VB6 из базы данных MS SQL server в рекордсет, потом по каждому полю рекордсета нахожу среднее значение.А теперь мне надо эти средние значения поместить в новый рекордсет,что в дальнейшем к ним обращаться. Вот код для нахождения среднего значения Set sred = Conn.Execute("Select сol1,col2,col3,col4 from Forma2 inner join Nalogoplatelchik on Forma2.INN=Nalogoplatelchik.INN where (Forma2.OtchetniiGod=" & a1 & ") and (Nalogoplatelchik.UN_OKVED_osnov=" & c & ")") j = 0 For i = 0 To sred.EOF sred.MoveFirst s = 0 Do While Not sred.EOF If i = 0 Then j = j + 1 If Not IsNull(sred.Fields(i).Value) Then s = s + sred.Fields(i).Value sred.MoveNext Loop sr = sr + s / j Next И вообще правильно ли я нахожу среднее по стобцу?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 17:07 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
1) Во-первых в SQL есть функция AVG ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 17:11 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
2) Во-вторых, вы уверены, что результат вы хотите поместить в рекордсет, а не в таблицу в базе данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 17:12 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
Вы предлагаете поместиь их таблицу, а потом обратно делать выорку уже из это таблицы??Я еще об этом не думала))Спасибо)А программа не будет каждый раз пересчитывая дублировать данные в таблице??? среднее должно подсчитываться с учетом года и кода ОКВЭД Было бы хорошо,чтобы это хранилось потом в аблице..а как сделать...чтоб программа подсчитала их 1 раз и потом не пересчитывала ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 17:18 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
В общем примерно так: Код: plaintext 1. 2. и вы получаете таблицу NewTable с готовыми средними значениями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 17:18 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
AliseА программа не будет каждый раз...??? Так это же ваша программа. Как напишете, так и будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 17:20 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
AliseВы предлагаете поместиь их таблицу, а потом обратно делать выорку Я вообще не вижу необходимости помещать это в таблицу. Если только конечно у вас не миллион записей в таблице. Делайте запрос - получайте сразу средние значения, а не высчитывайте их на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 17:21 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
спасибо большое!!))Я попробую:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 17:47 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
Каждый раз ,как программа запускается создается новая таблица???теперь VB ругается,что такая таблица уже существует.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 19:49 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
AliseКаждый раз ,как программа запускается создается новая таблица???теперь VB ругается,что такая таблица уже существует.. Я предложил вам несколько вариантов, определитесь, какой вам нужен. Либо делайте предварительно DROP TABLE, либо уберите INTO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 20:09 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
Shocker.ProЛибо делайте предварительно DROP TABLE, либо уберите INTOЕсли не ошибаюсь, drop нужно делать и перед into. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 23:10 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
AntonariyShocker.ProЛибо делайте предварительно DROP TABLE, либо уберите INTOЕсли не ошибаюсь, drop нужно делать и перед into. Зачем? Если таблицы нет, DROP вызовет ошибку. Так что, либо DROP, но тогда еще ваять проверку, либо DROP, точно зная, что таблицы нет, либо просто убрать INTO. Насколько я понимаю, автору нужен как раз третий вариант, без создания лишней таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 23:14 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
Не ошибаюсь. Если таблица уже существует, select into вызовет ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 11:00 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
AntonariyНе ошибаюсь. Если таблица уже существует, select into вызовет ошибку. Вызовет. Я что, против что ли? Я же предложил автору либо дропать, либо убрать INTO ДРУГОЙ вопрос, что если таблица не существует, то DROP тоже вызовет ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 11:06 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
> Автор: Shocker.Pro > > Antonariy > > Не ошибаюсь. Если таблица уже существует, select into вызовет ошибку. > Вызовет. Я что, против что ли? > Я же предложил автору либо дропать, либо убрать INTO > > ДРУГОЙ вопрос, что если таблица не существует, то DROP тоже вызовет ошибку. Куда не кинь, везде клин. А что batch'и уже отменили? Что-бы проверить если объект есть, дропнуть или что-бы не дропать несуществующий объект :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 11:18 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
Игорь ГорбоносА что batch'и уже отменили? Что-бы проверить если объект есть, дропнуть или что-бы не дропать несуществующий объект :) Шота мы переливаем из пустого в порожнее. Я про это уже писал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 11:49 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
просто Drop не помогает))!я пробовала применить и Drop(перед запросом,чтоб он удалял эту таблицу) и Into одновременно.Работает))Если дальше с этой таблицей не проводить никаких операций))А если проводить, то появляется ошибка "Операция не допускается,если объект закрыт" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 20:01 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
Aliseпросто Drop не помогает))!я пробовала применить и Drop(перед запросом,чтоб он удалял эту таблицу) и Into одновременно.Работает))Если дальше с этой таблицей не проводить никаких операций))А если проводить, то появляется ошибка "Операция не допускается,если объект закрыт" для устранения этой ошибки требуется set nocount on в начале пакета. сложно советовать, когда вы не приводите код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 20:03 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
это я тоже пробовала, та же ошибка..пишет объект закрыт.А если убрать sred.moveFirst- ошибка"Не удается найти объект в семействе, соответствующий требуемому имени и порядковому номеру " В приведенном коде нахожу стандартное отклонение sigma=корень из суммы(xi-xsred)^2/n Private Sub CommandButton1_Click() Dim Conn As ADODB.Connection, f, doh, sred, sred1, sred2, sred3 As Recordset Dim strConn As String, i, j, l As Long, v, NS As Variant Dim ss(1 To 50) As Long, so(1 To 50) As Variant, NN(1 To 50) As Variant, sr, s, N As Long, sigma As Double If (okved.Text = "") And (Inn.Text = "") And (God1.Text = "") And (God2.Text = "") And (God3.Text = "") Then MsgBox "Введите параметры для расчета" Else If okved.Text = "" Then MsgBox "Введите ОКВЭД" Else Set Conn = New ADODB.Connection strConn = "PROVIDER=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;" strConn = strConn & "Data Source=ALISA-2B337005A;INITIAL CATALOG=Nalog;" strConn = strConn & "User ID=;Password=;" Conn.ConnectionString = strConn Conn.Open c = okved.Text b = Inn.Text a1 = God1.Text a2 = God2.Text a3 = God3.Text 'srednee Set sred = Conn.Execute("set nocount on") Set sred = Conn.Execute("Drop table Srednee") Set sred = Conn.Execute("Select avg(Viruchka) as Viruchka,avg(ProcentiKpolucheniu) as ProcentiKpolucheniu,avg(ProchieDohodi) as ProchieDohodi," + _ "avg(DohodiOtUchastiyaVdrugihOrg) as DohodiOtUchastiyaVdrugihOrg,avg(PribilUbitokOtProdag) as ПрибыльУбыток_от_продаж," + _ "avg(PribilUbitokDoNO)as PribilUbitokDoNO,avg(SebestoimostProdTovarov)as SebestoimostProdTovarov,avg(KomerchesRashodi) as KomerchesRashodi," + _ "avg(UpravlenRashodi)as UpravlenRashodi,avg(ProchieRashodi) as ProchieRashodi," + _ "avg(ProcentiKUplate) as ProcentiKUplate into Srednee from Forma2 inner join Nalogoplatelchik on Forma2.INN=Nalogoplatelchik.INN" + _ " where (Forma2.OtchetniiGod=" & a1 & ") and (Nalogoplatelchik.UN_OKVED_osnov=" & c & ")and (UpravlenRashodi is not null ) group by OtchetniiGod, UN_OKVED_osnov") Set f = Conn.Execute("Select Viruchka,ProcentiKpolucheniu,ProchieDohodi," + _ "DohodiOtUchastiyaVdrugihOrg,PribilUbitokOtProdag," + _ "PribilUbitokDoNO,SebestoimostProdTovarov,KomerchesRashodi," + _ "UpravlenRashodi,ProchieRashodi," + _ "ProcentiKUplate from Forma2 inner join Nalogoplatelchik on Forma2.INN=Nalogoplatelchik.INN" + _ " where (Forma2.OtchetniiGod=" & a1 & ") and (Nalogoplatelchik.UN_OKVED_osnov=" & c & ")and (UpravlenRashodi is not null )") 'sigma sred.MoveFirst sr = 0 j = 0 For j = 0 To 3 sr = sr + sred.Fields(j).Value 'sred.Fields(0).Value sred.Fields(1).Value + sred.Fields(2).Value + sred.Fields(3).Value Next sred.MoveNext RPsr = sred.Fields(4).Value / sr f.MoveFirst i = 0 s = 0 For i = 0 To f.EOF Do While Not f.EOF v = f.Fields(0).Value + f.Fields(1).Value + f.Fields(2).Value + f.Fields(3).Value RP = f.Fields(4).Value / v ss(i) = RP NN(i) = (ss(i) - RPsr) ^ 2 s = s + NN(i) / i i = i + 1 j = j + 1 f.MoveNext Loop Next MsgBox s sigma = Sqr(s) MsgBox sigma ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 21:54 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
Нельзя ли правильно оформлять код? И вообще, почитать правила форума? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 21:57 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
неправильно: Код: plaintext правильно (касаемо других переменных - тоже) Код: plaintext бессмысленно: Код: plaintext Лучше, конечно, сделать процедуру на сервере и пихать весь SQL-код туда. Если не хотите процедуру делать, наполняйте нужную текстовую переменную, а потом выполняйте одним Execute ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 22:02 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
Aliseэто я тоже пробовала, та же ошибка..пишет объект закрыт.А если убрать sred.moveFirst- ошибка"Не удается найти объект в семействе, соответствующий требуемому имени и порядковому номеру " Не очень понятно, что вы хотите от рекордсета sred Пока ваш код вернет его пустым в любом случае, потому что select... into не возвращает данные в клиента, он просто формирует таблицу на сервере. Поэтому, если вы хотите получить средние значения в рекордсете sred, либо пишите в конце пакета "select * from Srednee", либо уж избавьтесь вообще от таблицы Srednee: уберите "drop table", уберите "into Srednee", тогда в рекордсете sred вы будете получать ваши средние значения (и set nocount on тоже не понадобится) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 22:10 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
AliseВ приведенном коде нахожу стандартное отклонение И третий момент, а вам вообще нужно всю эту муть писать? В SQL есть агрегатная функция STDEV - стандартное отклонение. Она все посчитает за вас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 22:13 |
|
||
|
Помогите с Recordset-ом
|
|||
|---|---|---|---|
|
#18+
Sorry,забыла:( Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Убираю sred.MoveFirst и sred.MoveNext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 22:15 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=127&tid=2159756]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 383ms |

| 0 / 0 |
