Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Пара вопросов по ASP .NET (VB .NET) Добавлено: 01.12.05 08:11  

Автор вопроса:  Алексей | Web-сайт: aleksey.nemiro.ru | ICQ: 261779681 
а точнее три:

1. Как создать массив элементов, например кнопки <asp:Button /> ?
2. VB .NET позволяет делать ассоциированные массивы? Например, myArray("Вася Пупкин"). Как?
3. Есть функция, в ней код:

Dim Conn As New OleDbConnection(strConnString)
Conn.Open

Dim Cmd as New OleDbCommand(strSQL, Conn)
Dim DR As OleDbDataReader      

DR = Cmd.ExecuteReader

If DR.Read Then



Если к этой функции обращаться часто возникает ошибка: «Exception Details: System.Data.OleDb.OleDbException: Неопознанная ошибка»

Часто - например, через цикл For i = 0 To 100 – уже идет ошибка, если до 20 то ошибки нет. Если следовать логике, то получается, что выполнить данный код можно будет одновременно не более чем для 20 пользователей. В чем трабла, может в харде?
ЗЫ: С адаптером тоже самое.

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 01.12.05 08:43
Пожалуйста, на будущее: задавайте разные вопросы в разных темах форума.

1.
For i As Int32 = 1 To 10
   Dim btn As New Button
   btn.ID = String.Format("btn{0}", i)
   Me.FindControl("Form1";).Controls.Add(btn)
Next


2. Нельзя. Это пережиток прошлого, который никому в принципе не нужен.

3. Вы OleDbConnection закрываете? Приведите весь код.

Ответить

Номер ответа: 2
Автор ответа:
 Алексей



black  admin

ICQ: 261779681 

Вопросов: 87
Ответов: 633
 Web-сайт: aleksey.nemiro.ru
 Профиль | | #2
Добавлено: 01.12.05 10:12
Ну Павел! Автоматом! Даже не смотрит кто спрашивает!
А это всего лишь я :)

1. Спасибо, но это не то. При объявлении контрола на aspx-странице можно массив сделать, типа <asp:Button id="btnMy" Index="0" runat="server" />?

2. Какого прошлого?! Где это раньше было? В PHP есть точно знаю, в C по моему что-то есть, в VB не видел, не было необходимости. А вот сейчас приспичило. Да и как нет, вот например таблицу в ДатаСит загружаем, там ведь массив таблиц, строк и т.п. и юзать можно и названия и индексы, значит ассоциированный массив есть!

3. КонЬечно я все закрываю, и Nothing их всех. Единственное, функция у меня в dll-ке и там коннектион объявлен с именем Conn, а в aspx я также использую коннектион с таким же именем, но не думаю что проблема может быть в этом.

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 01.12.05 10:22
Млин :) Алексей да Алексей :) Мало ли Алексеев :)

Ответить

Номер ответа: 4
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #4
Добавлено: 01.12.05 10:27
1. Нельзя. Да и не нао это. Отходи от дурных привычек.

2. Массивы - пожалуйста, созавай. Но в коде. Как в пункте 1 я писал. А вот так, декларативно, со всякими Load и Delete - это какое-то извращение.
Кстати, а для каких целей? В большинстве случаев гораздо удобней использовать нечто вроде Repeater или DataList. Гораздо изящней получится, и удобней.
В случае с таблицей - отображай её в DataGrid.

3. Nothing - это лишнее. Ничем не поможет абсолютно. Можешь всё-таки ко показать? И еще, чтобы узнать детали ошибки, попорбуй заключить код, в котором она генерируется в Try-Catch:

Try
 'код
Catch ex As OleDbException
 Response.Write ex.ToString
 Response.Write ex.Errors(0)
End Try

Ответить

Номер ответа: 5
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #5
Добавлено: 01.12.05 10:30
Чёрт.. 2-ой вопрос я видимо как-то связал с 1-ым и не вдумался в его суть (вот почему лучше задавать вопросы в разных темах) :) Предыдущие мои ответы на 2-ой вопрос считать недействительными.

Я не знаю, что такое "ассоциативный массив". Если тебе нужен доступ к элементам массива по ключам, то испоьзуй HashTable.

Dim h As New HashTable
h.Add ("Вася Пупкин", "Чемпион";)
MessageBox.Show (h("Вася Пупкин";))

Ответить

Номер ответа: 6
Автор ответа:
 Алексей



black  admin

ICQ: 261779681 

Вопросов: 87
Ответов: 633
 Web-сайт: aleksey.nemiro.ru
 Профиль | | #6
Добавлено: 01.12.05 11:20

Млин :) Алексей да Алексей :) Мало ли Алексеев :)

Азм тут один :)

1. Жаль…

2. Пф…, точно ассоциативный массив! Спасибо!

3. Код обычный, ничего сверхъестественного:
    
Dim Conn As New OleDbConnection(strConnString)
Conn.Open

Dim Cmd as New OleDbCommand(strSQL, Conn)
Dim DR As OleDbDataReader      

DR = Cmd.ExecuteReader

If DR.Read Then
  Try
    Return = DR("id";)
  Catch
    Return = vbNullString
  End Try
End If

DR.Close: Conn.Close
DR = Nothing: Conn = Nothing: Cmd = Nothing

В деталях ничего интересного не написано, просто System.Data.OleDb.OleDbException: Неопознанная ошибка в 270 строке и все…
Может дело в харде, как ни как cpu700mhz, 128 рамы, мало…


Nothing - это лишнее

Почему это. Хотя, конечно, все само автоматически Nothing, но мало ли что, вдруг забудет :)

Ответить

Номер ответа: 7
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #7
Добавлено: 01.12.05 11:34
С кодом всё нормально. Наверное дело в СУБД.

В деталях ничего интересного не написано

Можно взглянуть? Особенно на ex.Errors(0) - там обычно как раз вся суть и пишется.

Почему это. Хотя, конечно, все само автоматически Nothing, но мало ли что, вдруг забудет

Этот код только "обнуляет" значение переменной. Сам объект при этом не освобождается, а в любом случае остаётся лежать в памяти до сборки мусора.
Если эти строки расположены где-нибудь в середине функции, то в них есть смысл - Garbage Collector сможет раньше приступить к своей работе. А в конце функции в них никакой пользы нету, наоборот - лишние операции для процессора.

Ответить

Номер ответа: 8
Автор ответа:
 Алексей



black  admin

ICQ: 261779681 

Вопросов: 87
Ответов: 633
 Web-сайт: aleksey.nemiro.ru
 Профиль | | #8
Добавлено: 01.12.05 12:11


Можно взглянуть? Особенно на ex.Errors(0) - там обычно как раз вся суть и пишется.



Угу, ex.Errors(0) действительно многое может рассказать, такого объема информации, пожалуй, я еще не видел, а самое главное все сразу становится ясно и понятно:

Неопознанная ошибка

с этим просто нельзя не согласиться :)



..А в конце функции в них никакой



Учетмс, сенкс!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам