Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите студентке!:) / 2 сообщений из 2, страница 1 из 1
20.10.2003, 00:05
    #32297832
Леночка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите студентке!:)
Привет, помогите плиз.
Есть прога на VB - создание и работа не большой базы данных. Происходит чтение из текстого фаила, в котором и хранится сама база данных. Надо показать наглядно работу базы на форме, т. е. каждая новая строка фаила содержит новую информацию. На форме есть кнопки перехода ( |<- , <- , -> , ->| , ->*).(т. е. переходы к первой, последней, следующей, предыдущей записям и создание новой записи.)
Фаил открывается лишь в том случаи, когда хотим ввести новую запись, после этого можно "передвигаться" по базе.

Переход к первой записи я делала так:

Open fail For Input As #1
Line Input #1, stroka
Close #1

и дальше обрабатывала эту строку...

к последней записи:

Open fail For Input As #1
Do While Not EOF(1)
Line Input #1, stroka
Loop
Close #1

к новоой записи тоже понятно, а вот как перейти к предыдущей или следующей строке фаила???

Знаю, что надо воспользоватсья функциями Seek и Get, но конкретного применения не знаю. Помогите с примером, а то уже запарилась...

Большое СПАСИБО!:)

С Уважением Minx
...
Рейтинг: 0 / 0
20.10.2003, 12:50
    #32298262
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите студентке!:)
При построчном доступе, (если я не ошибаюсь - давно этим занимался) ты сможешь читать построчно двигаясь только вперед, чтобы двигаться назад, придется либо запоминать позиции начала кадждой считанной строки, либо каждый раз возвращаться вначало и пролистывать до нужной...

в данном конкретном случае (на мой взгляд) лучше использовать не строки, а структуры.
И тип доступа Random - при этом можно использовать операторы Put и Get, в которых есть понятие "номер записи".
Вот навскидку, что получилось (код вставь в форму, на форме три текстбокса Text1, text2, Text3 и две кнопки cmdMoveForvard и cmdMoveBack):
Код: 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.
Option Explicit

Const msFileName As String =  "c:\temp\meDB.tdb" 

Private Type myRecord
  Field1 As Long
  Field2 As String *  30 
  Field3 As Date
End Type

Dim dbFile As Integer

Dim meRec As myRecord
Dim recNumber As Long

Private Sub cmdMoveForvard_Click()
  meRec.Field1 = Text1.Text
  meRec.Field2 = Text2.Text
  meRec.Field3 = Text3.Text
  
  Put #dbFile, recNumber, meRec
  recNumber = recNumber +  1 
  
  Get #dbFile, recNumber, meRec
  Call RefreshMe
End Sub

Private Sub cmdMoveBack_Click()
  meRec.Field1 = Text1.Text
  meRec.Field2 = Text2.Text
  meRec.Field3 = Text3.Text
  
  Put #dbFile, recNumber, meRec
  If recNumber >  1  Then
    recNumber = recNumber -  1 
  
    Get #dbFile, recNumber, meRec
    Call RefreshMe
  End If
End Sub

Private Sub Form_Load()
  recNumber =  1 
  dbFile = FreeFile
  Open msFileName For Random Access Read Write Lock Write As #dbFile Len = Len(meRec)
  
  Get #dbFile, recNumber, meRec
  Call RefreshMe
End Sub

Private Sub RefreshMe()
  Text1.Text = meRec.Field1
  Text2.Text = meRec.Field2
  Text3.Text = meRec.Field3
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Close #dbFile
End Sub


Это все без всяких украшательств, проверок диапазонов и прочего - должно работать, на диске С: должна быть папка \Temp
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите студентке!:) / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]