JanusGrid сохранение в файл

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SerJay
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 06.05.2005 (Пт) 17:12
Откуда: Казахстан

JanusGrid сохранение в файл

Сообщение SerJay » 01.11.2005 (Вт) 13:37

Подскажите новичку как список ячеек сохранить в файл
есть grid и текстовое поле,нужно все ячейки с 4 колонки
сохранить в файл,но третью ячейку считать не с GRIDа
а с текстового поля.Всего ячеек 23000.Таким примитивным способом
всё происходит очень долго.Подскажите как сделать быстрее.
Заранее всем благодарен.

ms = FreeFile
Open "C:\SM\SMINFO\DATASHEET\3.txt" For Output As #ms

For Dat2 = 1 To 23000
Form2.rez1.Row = Dat2
Dat3 = Form2.rez1.Value(4)

If Dat2 = 3 Then
Dat3 = Text1.Text
End If

Print #ms, Dat3
Next Dat2

Close #ms

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.11.2005 (Вт) 13:46

1. А зачем ты вообще из Grid-a данные берешь, бери сразу из его источника (массив или Recordset - что там у тебя).

2. Строй строку используя StringBuilder и сбрасывай ее в файл за один раз - тут неоднократно об этом писали... Ну или открывай файл как поток (например, используя FSO) и сбрасывай в него.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

SerJay
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 06.05.2005 (Пт) 17:12
Откуда: Казахстан

Сообщение SerJay » 01.11.2005 (Вт) 13:55

Андрей, Грид загружает 4 колонки из 4-х текстовых файлов.
4-ая пустая.Юзер сам вносит туда данные и сохраняет.
Вот мне и надо сделать сохранение.Если бы не такое кол-во строк
то этот примитивный способ мне подошёл,но 23000 это долго.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.11.2005 (Вт) 13:59

SerJay писал(а):Андрей, Грид загружает 4 колонки из 4-х текстовых файлов.
4-ая пустая.Юзер сам вносит туда данные и сохраняет.


Насколько я понимаю эти колонки у тебя во что-то грузятся - скорей всего в массив. Непосредственно с ним и работай.

Или я не пойму - тогда нужен твой код.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

SerJay
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 06.05.2005 (Пт) 17:12
Откуда: Казахстан

Сообщение SerJay » 01.11.2005 (Вт) 14:09

Нельзя ли в JanuSe сделать что-то подобное как MsflexgriDe

MSFlexGrid1.Col = 1
MSFlexGrid1.Row = 1
MSFlexGrid1.ColSel = MSFlexGrid1.Cols - 1
MSFlexGrid1.RowSel = MSFlexGrid1.Rows - 1

'забираем его и выводим в файл
Open "c:\text.txt" For Output As #1
Write #1, MSFlexGrid1.Clip
Close #1

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.11.2005 (Вт) 14:23

SerJay писал(а):Нельзя ли в JanuSe сделать что-то подобное как MsflexgriDe


Нет. Но оно и не нужно, вообще-то - я уже написал как сделать, если все сделать правильно, то будет работать моментально.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

SerJay
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 06.05.2005 (Пт) 17:12
Откуда: Казахстан

Сообщение SerJay » 01.11.2005 (Вт) 14:38

А грузится в ячейки вот так,кстати с кодом ты мне помог

Dim i As Long, sb As New StringBuilder, _
iHFile As Integer, j As Integer, _
s As String, v As Variant, _
t As Single

Grid.Enabled = False
Grid.ItemCount = 0
Screen.MousePointer = vbHourglass
t = Timer
m_im = -1
sb.Step = 500000
For j = 1 To 4
s = App.Path & "\" & j & ".txt"
On Error Resume Next
GetAttr s
If Err.Number = 0 Then
On Error GoTo 0

iHFile = FreeFile
Open s For Binary As iHFile
s = Space$(LOF(iHFile))
Get #iHFile, , s
Close #iHFile

v = Split(s, vbCrLf)
i = UBound(v)
If m_im = -1 Then
ReDim m_mArr(i)
Else
If i > m_im Then ReDim Preserve m_mArr(i)
End If
m_im = i

For i = 0 To i
s = Trim$(v(i))
If Len(s) Then

m_mArr(i).Col(Choose(j, 0, 1, 5)) = s

sb.Append s & vbCrLf
End If
Next i
End If
Next j
t = Timer - t
Grid.ItemCount = m_im + 1

Grid.Enabled = Grid.ItemCount
Screen.MousePointer = vbDefault

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.11.2005 (Вт) 14:48

Ну и... Массив у тебя есть - его и сбрасывай - какие проблемы?

P.S. Форматируй код, а то он абсолютно ничитабелен...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 97

    TopList