Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Вопрос про базы данных


Автор: ArtNeoX 26.12.2005, 21:34
На форме создана DataGrid для отображения содержимого отчета по столбцам и строкам.
Вот только ни как не пойму каким образом можно выделить содержимое всей таблицы и скопировать в буфер обмена.
И еще как можно экспортировать содержимое базы Microsoft Access с которой работает Visual Basic в Excel.

Автор: Flotskiy 27.12.2005, 07:34
ArtNeoX, привет!
Занимаюсь с БД Access. Выбираю данные с БД при помощи SQL- запросов, примерно:
Код

                sSqlString = "SELECT EksamList, Family, ОцМП, ОцМУ, ОцРус, (ОцМП+ОцРус) As Ball, Fak, FormaOb, PK " & _
                          "FROM Glavnaja, Eksamen " & VNoteB & " AND Glavnaja.GlavID=Eksamen.EksID " & _
                          "AND FormaOb='ОС' AND &Icirc;&ouml;&ETH;&oacute;&ntilde;<> Null " & _
                          "ORDER BY Fak, Family"

adoConnection.Open connectString
adoRecordset.CursorLocation = adUseClient
adoRecordset.Open sSqlString, adoConnection
lblSelekt.Caption = adoRecordset.RecordCount

    cmdExcel.Enabled = True

А этой кнопкой отправляю в Excel:
Код

Private Sub cmdExcel_Click()
On Error Resume Next
Dim iIndx As Integer
Dim iRowIndex As Integer
Dim iColIndex As Integer
Dim iRecordCount As Integer
Dim iFieldCount As Integer
Dim sMessage As String
Dim avRows As Variant
Dim excelVersion As Integer

'-- Read all of the records into our array
avRows = adoRecordset.GetRows()

'-- Determine how many fields and records
iRecordCount = UBound(avRows, 2) + 1
iFieldCount = UBound(avRows, 1) + 1

'-- Create reference variable for the spreadsheet
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
'On Error Resume Next
' в готовый файл
objExcel.Workbooks.Open (App.Path & "\Doc\PriemZO")

'-- We need this line to insure Excel remains visible if we switch
Set objTemp = objExcel

excelVersion = Val(objExcel.Application.Version)
If (excelVersion >= 8) Then
 Set objExcel = objExcel.ActiveSheet
End If

'-- Place the names of the fields as column headers --
iRowIndex = 1
iColIndex = 1
For iColIndex = 1 To iFieldCount
  With objExcel.Cells(iRowIndex, iColIndex)
     .Value = adoRecordset.Fields(iColIndex - 1).Name
     With .Font
       .Name = "Times New Roman"
       .Bold = True
       .Size = 12
     End With
  End With
Next

'-- memory management --
adoRecordset.Close
Set adoRecordset = Nothing

'-- Just add data --
With objExcel
  For iRowIndex = 2 To iRecordCount + 1
   For iColIndex = 1 To iFieldCount
    .Cells(iRowIndex, iColIndex).Value = avRows(iColIndex - 1, iRowIndex - 2)
   Next
  Next
End With

objExcel.Cells(1, 1).CurrentRegion.EntireColumn.AutoFit

End Sub



Это пример рабочий, если будут вопросы - отвечу, да и парни помогут.
С уважением

Автор: ArtNeoX 27.12.2005, 19:50
Как делать выборку из базы данных, например по фамилии или имени чтобы в DataGrid отображались только выбранные данные.
Да и есть толковая литература в сети по базам данных, что бы с нуля и далее...

Автор: cardinal 27.12.2005, 20:26
Тут
http://forum.vingrad.ru/index.php?showtopic=52984
был?

Автор: Flotskiy 28.12.2005, 06:08
ArtNeoX, привет
В разделе "Ссылки на интересные сайты" посмотри ссылку на сайт "DMK". Очень много примеров работы с БД. С них я начинал.
С укажением

Автор: ArtNeoX 30.12.2005, 20:09
Пытаюсь написать базу данных по статье http://www.vbnet.ru/articles/showarticle.aspx?id=178

"Для использования TrueDbGgrid нужно поставить соответствующую галочку в окне Components, которое вызывается нажатием правой кнопки мыши на панели TollBox. Также следует включить True Data Control Lite и Microsoft ADO Data Control."

но у меня в vb6 отсутствуют компоненты
ComponentOne True DataControl Lite 7.0
ComponentOne True DBGrid Pro 7.0 (OLEDB)
Microsoft ADO Data Control 6.0 (SP6) (OLEDB)
которые как я понял содержатся в файлах
c:\windows\system32\TDBG7.OCX
c:\windows\system32\TODBG7.OCX (OLE DB)
Где их можно скачать?
Бросьте кто нибудь на ящик
Artneox@yandex.ru


Автор: Exception 30.12.2005, 20:16
Спроси у Voldemar2004, у него вродь были...

Автор: Voldemar2004 31.12.2005, 20:18
Цитата(ArtNeoX @ 27.12.2005, 19:50)
Как делать выборку из базы данных, например по фамилии или имени чтобы в DataGrid отображались только выбранные данные.

Код

    Data1.RecordSource = "Select <поле1, ... , полеN> From <имя_таблицы_без расширения (mdb/dbf...)>"
    Data1.Refresh
    TDBGrid1.Refresh
Цитата(ArtNeoX @ 30.12.2005, 20:09)
Microsoft ADO Data Control 6.0 (SP6) (OLEDB)
которые как я понял содержатся в файлах
c:\windows\system32\TDBG7.OCX
c:\windows\system32\TODBG7.OCX (OLE DB)
Microsoft ADO Data Control 6.0 - это компонент msadodc.ocx, а не
Цитата
c:\windows\system32\TDBG7.OCX
c:\windows\system32\TODBG7.OCX (OLE DB)


Цитата(ArtNeoX @ 30.12.2005, 20:09)
но у меня в vb6 отсутствуют компоненты
ComponentOne True DataControl Lite 7.0
По-моему это другие компонеты, которые не входят в состав стандартного пакета TDBgrid Pack. При установке они все видны в VB->Components... Советую ставить все в папку Windows, иначе могут возникнуть проблемы с регистрацией компонентов.

Автор: ArtNeoX 6.1.2006, 13:02
Помогите кто нибудь с написанием базы данных. smile
Я скину исходники. Программа готова вот только
1. нужно реализовать в программе выборку по условиям что бы это отображалось в DataGrid (Например отобразить всех с одной фамилией)
2. нужно реализовать в программе экспорт содержимого DataGrid в excel
3. как выделять содержимое DataGrid для копирования в буфер обмена.
кому не сложно помочь новичку, пишите [removed by moderator]
М
Akina
Еще одна просьба помогать в мыло - выкину тему в Центр помощи.

Автор: ArtNeoX 7.1.2006, 09:18
objExcel.Workbooks.Open (App.Path & "PriemZO")
это открывает файл в экселе
но ни чего туда не добавляется
например у меня 4 столбца и в них много строк
Код

With objExcel
  For iRowIndex = 2 To iRecordCount + 1
   For iColIndex = 1 To iFieldCount
    .Cells(iRowIndex, iColIndex).Value = avRows(iColIndex - 1, iRowIndex - 2)
   Next
  Next
End With
objExcel.Cells(1, 1).CurrentRegion.EntireColumn.AutoFit
End Sub

не помогает

Автор: cardinal 7.1.2006, 16:48
ArtNeoX, используй теги для кода!

Автор: ArtNeoX 8.1.2006, 12:20
Какие?
smile

Автор: Dunka 8.1.2006, 14:50
Подскажите пожайлуста как в коде записать текущую дату в поле таблицы, чтобы поле с датой заполнялось автоматически, без нажатия на MonthView?

Автор: cardinal 8.1.2006, 15:23
ArtNeoX, смотри кнопку "код" над сообщением!
Добавлено @ 15:24
Модератор: Пожалуйста, один топик - один вопрос.

Автор: ArtNeoX 9.1.2006, 23:13
Мне кто нибудь может внятно объяснить
как сделать фильтр в DataGrid чтобы в виде таблицы отражались только нужные данные, например в таблице в первом столбце много фамилий, мне же нужно чтобы были показаны строчки с фамилиями, например Ивнов
как вывести данные в DataGrid в алфавитном порядке по первому столбцу
как экспортировать содержимое DataGrid в excel

Неужели это такие сложные вопросы для вас програмистов?

Автор: ArtNeoX 10.1.2006, 03:32
Private Sub Command1_Click()
Dim iXLApp As Object
Set iXLApp = CreateObject("Excel.Application")
With iXLApp
With .Workbooks.Add(xlWBATWorksheet).Worksheets(1)
With .Range("A2")
.Value = ("ОК")
End With
.Visible = True
End With
End Sub

добавит в ексель в ячейку А2 слово ОК
А как сделать чтобы туда добавлялись данные из базы данных?

Автор: Flotskiy 10.1.2006, 13:10
ArtNeoX, привет! Посмотри небольшую прогупо БД.
Может , поможет.
С уважением

Автор: Voldemar2004 10.1.2006, 18:22
Цитата(cardinal @ 10.1.2006, 17:54 Найти цитируемый пост)

Да, я вроде не гость а тоже не фурычит...

Цитата(ArtNeoX @ 10.1.2006, 14:17 Найти цитируемый пост)

не качается
Я просто сделал: в Опере щелкаем правой кнопкой мыши по ссылке Test.rar 73,06 Kb сохраняем, удалим расширение php переименуем в rar. Читается без проблем. Там какие-то файлы Boss и Biblioteka. smile

Автор: Flotskiy 11.1.2006, 08:45
Добрый день всем! Это у меня была небольшая прога, я лишнее удалил, оставил небольшую БД и одну форму с DBGrid, пусть пробует, там есть почти все ответы но его ArtNeoX
вопросы.
С уважением
PS. Папку "Тест" надо установить на диске C:

Автор: ArtNeoX 11.1.2006, 14:54
НЕ КАЧАЕТСЯ !!!!
кинь на ящик.

Автор: ArtNeoX 12.1.2006, 00:18
В DataGreed по умолчанию 5 столбцов
что нужно дабавить к кнопке, что бы при ее нажатии в datagreed остались только 1 и 2 столбец, а остальные скрылись
При нажатии на кнопку второй раз все столбцы снова появились.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)