powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Нужно считать записи из dbgrid
25 сообщений из 174, страница 2 из 7
Нужно считать записи из dbgrid
    #36649061
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bosscsМожно тогда уже конкретнее в чем у меня ошибка? Не правильно объявлен массив?

Я вам отвечу - да неправильно объявлен массив. Дальше вы опять начнете гадать, "а так правильно?", "а как правильно?", вместо того, чтобы почитать уже в конце-концов хоть какой-нибудь учебник, и подумать над каждой своей написанной строкой прежде, чем вываливать весь свой бред сюда и просить всех разобраться, где же вы забыли подумать.
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649069
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, главное, что вы указали в каком месте ошибка, там я уже попробую разобраться. Если больше ошибок нет - все должно заработать.
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649288
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bosscs,
попробуйте сначало выгружать в listbox (для проверки)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Command1_Click()
For i =  0  To  11 
If NOT Data1.Recordset.EOF Then
strtemp= Data1.Recordset("Выражение1").Value
List1.AddItem (str(strtemp))
Data1.Recordset.MoveNext
End If
Next i
End Sub
а эта строчка по идее должна работать у вас
Код: plaintext
rc = Data1.Recordset.RecordCount
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649299
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bosscsЕсли больше ошибок нет - все должно заработать.Отсутствие синтаксических ошибок не страхует от отсутствия логических ошибок.
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649321
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Command1_Click()
For i =  0  To  11 
     If NOT Data1.Recordset.EOF Then
           ...
           Data1.Recordset.MoveNext
     End If
Next i
End Sub

Кстати, а зачем здесь цикл For? Где переход в начало рекордсета? Почему цикл только по 12-ти записям? Если в рекордсете меньше 12-ти записей, цикл будет работать в холостую, зачем? Почему нельзя сделать так:
Код: plaintext
1.
2.
3.
4.
Data1.Recordset.MoveFirst
Do While Not Data1.Recordset.EOF
   ....
   Data1.Recordset.MoveNext
Loop
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649446
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Dim mas( 11 ) As Variant
Dim db As Database
Dim rs As Long

Private Sub Command1_Click()
'rc = Data1.Recordset.RecordCount
'MsgBox Data1.Recordset.RecordCount
Data1.Recordset.MoveFirst
For i =  1  To  11 
mas(i) = Data1.Recordset("Âûðàæåíèå1").Value
MsgBox Data1.Recordset("Âûðàæåíèå1").Value
Data1.Recordset.MoveNext
Next i
End Sub

Private Sub Form_Load()
Set db = OpenDatabase(Form1.CommonDialog1.FileName)
Set Data1.Recordset = db.OpenRecordset("Grafik")
End Sub

Если в массиве указать кол-ство записей (хотя в масиве начинается с 0 и сейчас 12 записей) то ошибок не выбивает. Но я заранее не знаю сколько будет элементов в массиве, потому нужно динамический массив.
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649501
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bosscs,

Перенаправлю вопросы
Кстати, а зачем здесь цикл For? Почему цикл только по 11-ти первым записям? Если в рекордсете меньше 11-ти записей будет ошибка, где обработка этой ситуации?

Зачем массив?
Для построения графика тебе нужно знать диапазон выводимых данных для оси Х и минимум и максимум для оси Y, что-бы правильно рассчитать коэффициенты масштабирования. После этого можно рисовать сразу, напрямую используя данные рекордсета.
В чем проблема?
Для получения границ данных можно сделать два дополнительных запроса, получить 4 числа и просчитать коэффициенты, после этого можно открывать всю таблицу и идти по каждой записи и сразу выводить данные на график.
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649534
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,
Игорь ГорбоносКстати, а зачем здесь цикл For? Где переход в начало рекордсета? Почему цикл только по 12-ти записям? Если в рекордсете меньше 12-ти записей, цикл будет работать в холостую, зачем? Почему нельзя сделать так:
у меня при такой констукции выдавало постоянно ошибку , если я добавлял записи вручную за день до этого допустим, то цикл не останавливался
Код: plaintext
1.
2.
3.
4.
5.
Data1.Recordset.MoveFirst
Do While Not Data1.Recordset.EOF
   ....
   Data1.Recordset.MoveNext
Loop
а с for next в случае ошибки просто цикл заканчивался
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649541
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admу меня при такой констукции выдавало постоянно ошибку , если я добавлял записи вручную за день до этого допустим, то цикл не останавливался

Надо открывать рекордсет в режиме SnapShot (KeySet)
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649555
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,
правильно было так
Код: plaintext
1.
2.
3.
4.
5.
6.
rs=Data1.Recordset.RecordCount
For i =  0  To rs
If NOT Data1.Recordset.EOF Then
mas(i) = Data1.Recordset("Выражение1").Value
Data1.Recordset.MoveNext
End If
Next i
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649557
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбоносbosscs,

Перенаправлю вопросы
Кстати, а зачем здесь цикл For? Почему цикл только по 11-ти первым записям? Если в рекордсете меньше 11-ти записей будет ошибка, где обработка этой ситуации?

Зачем массив?
Для построения графика тебе нужно знать диапазон выводимых данных для оси Х и минимум и максимум для оси Y, что-бы правильно рассчитать коэффициенты масштабирования. После этого можно рисовать сразу, напрямую используя данные рекордсета.
В чем проблема?
Для получения границ данных можно сделать два дополнительных запроса, получить 4 числа и просчитать коэффициенты, после этого можно открывать всю таблицу и идти по каждой записи и сразу выводить данные на график.

For i = 1 To 11
mas(i) = Data1.Recordset("Выражение1").Value
цикл, что бы пройтись по всем элементам массива.
У меня в дбгриде 11 записей, но я конечно хотел бы сделать что бы оно само считало сколько там записей, да и Data1.Recordset.RecordCount работает, 11 записей выводит, но у меня ошибку выбивает. Потому пока что хотя бы так сделать.

Если в рекордсете меньше 11-ти записей будет ошибка, где обработка этой ситуации?
Я до этого еще дойду, нужно сделать что бы оно считывало для начала.
Зачем массив хз, по другому не знаю как. Да и с массивом не знаю как)
Вообщем я хочу сделать график не столбиковый а точечный, думаю он легче будет. На оси Х я хочу равномерно разделить на части как то, а по у в высоту уже по точкам( Бредовая идея, но завтра блин работу здавать, я уже все что хочешь придумываю
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649576
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proaduka05admу меня при такой констукции выдавало постоянно ошибку , если я добавлял записи вручную за день до этого допустим, то цикл не останавливался

Надо открывать рекордсет в режиме SnapShot (KeySet)
это для того чтобы запретить вносить данные?
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649585
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Proaduka05admу меня при такой констукции выдавало постоянно ошибку , если я добавлял записи вручную за день до этого допустим, то цикл не останавливался

Надо открывать рекордсет в режиме SnapShot (KeySet)
это для того чтобы запретить вносить данные?

Нет
Это для того, чтобы изменение таблицы не отражались на рекордсете.
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649601
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
так мне надо чтобы изменялись в recordset-e
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649615
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
так мне надо чтобы изменялись в recordset-e

Ну тогда цикл обработки данных, которые непрерывно меняются в процессе вывода - задача нетривиальная
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649621
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bosscs,
Код: plaintext
1.
2.
3.
4.
5.
For i =  0  To rs
If NOT Data1.Recordset.EOF Then
mas(i) = Data1.Recordset("Выражение1").Value
Data1.Recordset.MoveNext
End If
Next i
поставьте это условие
Код: plaintext
If NOT Data1.Recordset.EOF Then
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649628
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
если можно пример ))
а так и так нормально))
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649677
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admа так и так нормально))

Так что нормально-то?
aduka05admу меня при такой констукции выдавало постоянно ошибку , если я добавлял записи вручную за день до этого допустим, то цикл не останавливался
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649728
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот примерчик, почти то, что вы хотели. разбирайтесь
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649741
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proaduka05admа так и так нормально))

Так что нормально-то?
aduka05admу меня при такой констукции выдавало постоянно ошибку , если я добавлял записи вручную за день до этого допустим, то цикл не останавливался
ну те строки которые вручную добавляю и так не нужны , они добавляются в конец recordset-a
, не нужны по той причине что две таблицы сравниваются по полю KOD , а в новых строках
оно бывает не заполненным
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649756
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Proaduka05admа так и так нормально))

Так что нормально-то?
aduka05admу меня при такой констукции выдавало постоянно ошибку , если я добавлял записи вручную за день до этого допустим, то цикл не останавливался
ну те строки которые вручную добавляю и так не нужны , они добавляются в конец recordset-a
, не нужны по той причине что две таблицы сравниваются по полю KOD , а в новых строках
оно бывает не заполненным

Тогда надо добавить в условие рекордсета WHERE KOD=0 (ну или что-там у вас) и они не будут появляться и мешать.
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649761
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm
поставьте это условие
Код: plaintext
If NOT Data1.Recordset.EOF Then

Поставил, ошибка та же:
Subscript out of range((
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649769
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bosscsПоставил, ошибка та же:
Subscript out of range((

Выход за пределы массива
И явно не на этой строке.
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649783
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
нельзя вместо этого
Код: plaintext
Dim mas( 11 ) As Variant
вот так написать
Код: plaintext
Dim mas() As Variant
...
Рейтинг: 0 / 0
Нужно считать записи из dbgrid
    #36649784
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,

можно
...
Рейтинг: 0 / 0
25 сообщений из 174, страница 2 из 7
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Нужно считать записи из dbgrid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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