Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Удаление n-ой строки массива Добавлено: 30.06.03 17:21  

Автор вопроса:  sArutiun | ICQ: 153685354 

Привет всем!

Есть таблица Access состоящая, скажем, из 10 записей. Обращение к записям происходит в произвольном порядке (через Rnd по номеру строки). Повторное обращение к уже использованной записи не допускается. Добавил в таблицу дополнительное поле "Type" где фиксируется обращались ли уже к этой записи или нет. Удалять записи из таблицы нельзя.

Вот стою я на перепутье.

Либо создать массив и перегонять эти записи в массив и уже с массивом работать, но я не знаю как удалять, допустим 4 или 7 (не первую и не последнюю строку этого массива).

Либо создать вторую таблицу с такой же структурой как и первая, соответственно перегонять туда записи из первой таблицы и работать уже со второй таблицей (использованные строки удалять из нее).

Если кто сталкивался, подскажите. Спасибо.

Ответить

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

Номер ответа: 1
Автор ответа:
 Nio



Вопросов: 15
Ответов: 115
 Web-сайт: www.fea.nxt.ru
 Профиль | | #1
Добавлено: 30.06.03 17:37

Если таблица будет большая, то второй способ будет тормозить, ведь вторую таблицу где-то хранить надо, а Access постоянно Flush'ит, для надёжности. Поэтому просто загоняй всё в массив (если конечно памяти много), а потом - зануляй элементы. Кстати, ноль в этом случае послужит и флагом обращения к записи...  

Ответить

Номер ответа: 2
Автор ответа:
 sArutiun



ICQ: 153685354 

Вопросов: 11
Ответов: 42
 Профиль | | #2 Добавлено: 30.06.03 18:08

Насчет флага я согласен.

Но вот в чем вопрос. Если к 4 записи было обращение, флаг там будет равен 0, то где вероятность, что Rnd снова не выдаст номер этой записи. Можно сделать проверку на флаг и снова запускать Rnd, пока она не покажет другую цифру.

Я хотел немного по другому. Не отмечать использованную запись, а удалять ее и кол-во строк массива делать -1.

Проблема в том, что я не знаю как удалять n-ую строку массива.

 

Ответить

Номер ответа: 3
Автор ответа:
 MAGNUS



Вопросов: 12
Ответов: 430
 Профиль | | #3 Добавлено: 30.06.03 19:10

A ее и нельзя удалять, можно обрезать с краю или добавить, используя Preserv.

А чем тебе поможет удаление строки из массива? Случайное(псевдослучайное) число будет выбрасываться в независимости от твоего желания. Что я бы предложил так это во использовать Collection, там можно и добавлять и удалять, это как раз твой случай.

Если не знаешь как с ней работать - пиши.

Ответить

Номер ответа: 4
Автор ответа:
 MAGNUS



Вопросов: 12
Ответов: 430
 Профиль | | #4 Добавлено: 30.06.03 19:15

A ее и нельзя удалять, можно обрезать с краю или добавить, используя Preserv.

А чем тебе поможет удаление строки из массива? Случайное(псевдослучайное) число будет выбрасываться в независимости от твоего желания. Что я бы предложил так это во использовать Collection, там можно и добавлять и удалять, это как раз твой случай.

Если не знаешь как с ней работать - пиши.

Ответить

Номер ответа: 5
Автор ответа:
 ol2003



Вопросов: 3
Ответов: 122
 Профиль | | #5 Добавлено: 30.06.03 22:31

Ребята, если речь идет о .NET то по-моему проще всего использовать Dataset. Загрузил - связь порвал, - и делай все, что душе угодно.

Ответить

Номер ответа: 6
Автор ответа:
 sArutiun



ICQ: 153685354 

Вопросов: 11
Ответов: 42
 Профиль | | #6 Добавлено: 01.07.03 09:00

2 MAGNUS

C Collection не работал. Сейчас буду читать.

2 ol2003
Работаю на VB 6.0

О результатах обязательно сообщю.

 

Ответить

Номер ответа: 7
Автор ответа:
 sArutiun



ICQ: 153685354 

Вопросов: 11
Ответов: 42
 Профиль | | #7 Добавлено: 01.07.03 13:46

Сделал Collection.

Правда пришлось написать небольшую функцию по обработке записи коллкции. Я использовал пользовательский тип данных

Type myType

  field1 as string

  field2 as string

  field3 as string

End Type

т.к. Коллекция не принимает

myCollection.Add (myType)

пришлось делать так

myCollection.Add (myType.field1+"*"+myType.field2+"*"+myType.field3)

(*-разделитель полей)

вот тут и пришлось писать функцию по обработке записи коллекции. Значения этих полей сохраняется в переменные, запись коллекции удаляется и дальше работают переменные. Как процедура отрабатывает, берется следующая запись коллекции и все по новой.

Может можно как-то проще, но как я не знаю.

Спасибо MAGNUS за совет по коллекциям.

Ответить

Номер ответа: 8
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #8
Добавлено: 04.07.03 05:26

Ты неверно коллекцию использовал.

Для добавления в коллекцию кустарной переменной нужно записывать её как класс. Для этого в модуле класса объяви эти переменные и добавляй в коллекцию копии модуля класса.

Ответить

Страница: 1 |

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



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