DBGrid

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

DBGrid

Сообщение Dummiel » 11.06.2004 (Пт) 9:27

Уважаемые, здравствуйте!
Из ника видно, кто я, но научиться хочу. Научите работать с DBGrid. И как лучше (оптимальнее?) работать - с DAO или ADO?
Конкретно:
1. Как подключать БД?
2. Как при щелчке на заголовке столбца отсортировать в нем записи?
3. Как сделать заголовки столбцов свои, а не названия полей БД?
4. Как при щелчке на DBGrid правой клавишей мыши вывести контекстное меню?
5. Как при выборе определенного пункта контекстного меню вывести в таблицу Exel или в Word только те столбцы, которые мне нужны?

И вообще по БД:
Как записывать в БД инфу программно, без использования объекта Data?
А еще у меня прога вылетает, если БД пустая (только что создана, нет ни одно записи). Что делать и как быть?

А если кто исходники намылит, то это будет сказка, и я за его здоровье пару рюмок опрокину :-))) :?:

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Re: DBGrid

Сообщение codemaster » 11.06.2004 (Пт) 9:40

[quote="Dummiel"]Уважаемые, здравствуйте!
Из ника видно, кто я, но научиться хочу. [quote]


Самое лучшее купи книгу по VB в магазине

Если деньги ушли на рюмки то тогда

http://firststeps.ru раздел VB - просто и доступно

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 11.06.2004 (Пт) 9:43

Спасибо, юморист!
Были бы книги в нашей глуши - давно бы купил.
Хлопцы тай девчата, забыл сказать - все мои вопросы желательно решить программно, без использования DATA.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.06.2004 (Пт) 17:57

DBGrid - Data Bound Grid, т.е. связанный с Data.
Остальное напишу попозже, ОК?
Да, кстати, советую юзать FlexGrid - он гораздо лучше.
Нет меня больше

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 11.06.2004 (Пт) 20:36

Взято с htt://sharig.webzone.ru/vbcode/23_base/132.htm

Создание бд кодом


Для начала вам необходимо подключить (меню Project->References) Microsoft DAO 2.5/3.51 Compatibility Library

Вставьте следующий код, запустите проект. Если вы еще не сохранили проект, то база создаться в папке, куда вы проинсталировали VB (по умолчанию - C:\Program Files\Microsoft Visual Studio\VB98).
Private Sub Form_Load()
Dim dbFile As String
' Проверяет наличие файла, имеющего имя, которое будет присвоено новой базе данных. Если есть такая база, то новая база не создается, если нет то вызывается функция и база создается.
If Dir(App.Path & "\kadrs.Mdb") <> "" Then
dbFile=App.Path & "\kadrs.Mdb"
Else:
dbFile=dbgreit()
End If
End Sub
Public Function dbgreit()
Dim dbkadr As Database, NewWs As Workspace 'Описание БД и рабочей области
Dim dbOpts As Long, dbName As String, tbWorker As TableDef
Dim tbFam As TableDef, Rel1 As Relation ' Описание таблицы и отношения
Dim Ind1, Ind2, Ind3, Ind4, Ind5 As Index'Описание индексов
Dim Fin, Fr, Fin2, Fin3, Fr2, Fin4, Fr3, Fin5, Fr4 As Field
Dim Fin6, Fr5, Fin7, Fr6, Fin8, Fr7, Frel As Field
Dim Ind9 As Index, Fs1, Fs2 As Field
ReDim F(1 To 54) As Field ' Описание полей табл. Worker
ReDim P(1 To 10) As Field ' Описание полей табл. Family
' Строковая переменная, указывающая на файл БД находящийся по тому же пути, что и файл программы.
dbName=App.Path & "\kadrs.Mdb"
Set NewWs=DBEngine.Workspaces(0)' Создание рабочей области
dbOpts=dbVersion35 + dnEncrypt ' Параметры БД - версия Jet-машины 3,5 и кодирование.
Set dbkadr=NewWs.CreateDatabase(dbName, dbLangCyrillic, dbOpts) ' Создание рускоязычной БД
' добавление таблицы с именем Worker в БД
Set tbWorker=dbkadr.CreateTableDef("Worker")
' добавление таблицы с именем Family в БД
Set tbFam=dbkadr.CreateTableDef("Family")
' Создание и описание счетчика с именем Код (табл. Worker)
Set Fin=tbWorker.CreateField("Код", dbLong) ' Создание поля в таблице с именем Код
Set Frel=tbWorker.CreateField("Number", dbLong) ' Создаем в таблице поле связи
Fin.Attributes=dbAutoIncrField ' Атрибуты поля - автоинкремент
tbWorker.Fields.Append Fin ' Добавляем поля в таблицу
tbWorker.Fields.Append Frel
' Первичный ключ таблицы Worker (индекс по полю Number)
Set Ind1=tbWorker.CreateIndex("Number")
Ind1.Primary=True ' Устанавливаем свойство ключа - первичный ключ
Set Frel=Ind1.CreateField("Number", dbLong) ' Создаем индексное поле аналогичное полю связи из таблицы
Ind1.Fields.Append Frel ' Добавляем его к индексу
tbWorker.Indexes.Append Ind1 ' Добавляем индекс к таблице

' Описание остальных полей (табл. Worker)
Set F(1)=tbWorker.CreateField("Фамилия", dbText, 50) ' Создание текстового поля размером 50 символов
Set F(2)=tbWorker.CreateField("Имя", dbText, 50)
Set F(3)=tbWorker.CreateField("Отчество", dbText, 50)
Set F(4)=tbWorker.CreateField("Дата рождения", dbDate) ' Создание поля даты
Set F(5)=tbWorker.CreateField("Национальность", dbText, 50)
Set F(6)=tbWorker.CreateField("Должность", dbText, 150)
Set F(7)=tbWorker.CreateField("СемПоложение", dbText, 20)
Set F(8)=tbWorker.CreateField("Телефон", dbText, 15)
Set F(9)=tbWorker.CreateField("ДатаЗап", dbDate)
Set F(10)=tbWorker.CreateField("Образование", dbText, 90)
Set F(11)=tbWorker.CreateField("Телефон2", dbText, 15)
Set F(12)=tbWorker.CreateField("Профессия", dbText, 200)
Set F(13)=tbWorker.CreateField("Серия", dbText, 10)
Set F(14)=tbWorker.CreateField("Номер", dbText, 10)
Set F(15)=tbWorker.CreateField("Кем выдан", dbText, 200)
Set F(16)=tbWorker.CreateField("ДатаВыдачи", dbDate)
Set F(17)=tbWorker.CreateField("Место рождения", dbText, 250)
Set F(18)=tbWorker.CreateField("Индекс", dbText, 10)
Set F(19)=tbWorker.CreateField("Улица", dbText, 100)
Set F(20)=tbWorker.CreateField("Город", dbText, 100)
Set F(21)=tbWorker.CreateField("Область", dbText, 100)
Set F(22)=tbWorker.CreateField("Район", dbText, 100)
Set F(23)=tbWorker.CreateField("УчЗав", dbText, 200)
Set F(24)=tbWorker.CreateField("ДатаОк1", dbDate)
Set F(25)=tbWorker.CreateField("УчЗав2", dbText, 200)
Set F(26)=tbWorker.CreateField("ДатаОк2", dbDate)
Set F(27)=tbWorker.CreateField("СпецПоД", dbText, 200)
Set F(28)=tbWorker.CreateField("Квалификация", dbText, 200)
Set F(29)=tbWorker.CreateField("НомД", dbText, 50)
Set F(30)=tbWorker.CreateField("УчЗван", dbText, 200)
Set F(31)=tbWorker.CreateField("ОКОДТ", dbText, 10)
Set F(32)=tbWorker.CreateField("ОКСО", dbText, 10)
Set F(33)=tbWorker.CreateField("ГрУч", dbText, 30)
Set F(34)=tbWorker.CreateField("КатУч", dbText, 30)
Set F(35)=tbWorker.CreateField("Состав", dbText, 150)
Set F(36)=tbWorker.CreateField("Звание", dbText, 200)
Set F(37)=tbWorker.CreateField("ВУС", dbText, 50)
Set F(38)=tbWorker.CreateField("Годность", dbText, 100)
Set F(39)=tbWorker.CreateField("Военкомат", dbText, 200)
Set F(40)=tbWorker.CreateField("СпецУч", dbText, 50)
Set F(41)=tbWorker.CreateField("НомСтрах", dbText, 40)
Set F(42)=tbWorker.CreateField("Date1", dbDate)
Set F(43)=tbWorker.CreateField("Date2", dbDate)
Set F(44)=tbWorker.CreateField("Date3", dbDate)
Set F(45)=tbWorker.CreateField("Date4", dbDate)
Set F(46)=tbWorker.CreateField("Date5", dbDate)
Set F(47)=tbWorker.CreateField("Date6", dbDate)
Set F(48)=tbWorker.CreateField("Date7", dbDate)
Set F(49)=tbWorker.CreateField("Date8", dbDate)
Set F(50)=tbWorker.CreateField("Date9", dbDate)
Set F(51)=tbWorker.CreateField("Date10", dbDate)
Set F(52)=tbWorker.CreateField("Причина", dbText, 200)
Set F(53)=tbWorker.CreateField("Date11", dbDate)
Set F(54)=tbWorker.CreateField("Стат", dbText, 200)

' Создание индекса для сортировки по фамилиям и именам (по алфавиту)
Set Ind9=tbWorker.CreateIndex("Name") ' Создание индекса с именем Name
Ind9.Unique=False ' Индекс не уникальный - значения могут повторяться
Set Fs1=Ind9.CreateField("Фамилия")
Set Fs2=Ind9.CreateField("Имя")
Ind9.Fields.Append Fs1
Ind9.Fields.Append Fs2
tbWorker.Indexes.Append Ind9

' Создание и описание счетчика с именем Код (табл. Family) аналогично таблице Worker
Set Fin2=tbFam.CreateField("Код", dbLong)
Fin2.Attributes=dbAutoIncrField
tbFam.Fields.Append Fin2

' Первичный ключ таблицы Family
Set Ind2=tbFam.CreateIndex("Код")
Ind2.Primary=True
Set Fin2=Ind2.CreateField("Код", dbLong)
Ind2.Fields.Append Fin2
tbFam.Indexes.Append Ind2

' Описание остальных полей (табл. Family)
Set P(1)=tbFam.CreateField("Номер", dbLong)
Set P(2)=tbFam.CreateField("Кто", dbText, 20)
Set P(3)=tbFam.CreateField("Фамилия", dbText, 50)
Set P(4)=tbFam.CreateField("Имя", dbText, 50)
Set P(5)=tbFam.CreateField("Отчество", dbText, 50)
Set P(6)=tbFam.CreateField("Год рождения", dbText)

' Добавление полей в таблиу Worker
For i=1 To 54
tbWorker.Fields.Append F(i)
Next i

' Добавление полей в таблиу Family
For i=1 To 6
tbFam.Fields.Append P(i)
Next i

' Добавление таблицы Worker в БД
dbkadr.TableDefs.Append tbWorker

' Добавление таблицы Family в БД
dbkadr.TableDefs.Append tbFam

' Создание объекта Relation (связь, отношение) с именем first
Set Rel1=dbkadr.CreateRelation("first")
' Установка свойств отношения
Rel1.Table="Worker" ' Первичная (мастер) таблица отношения
Rel1.ForeignTable="Family" ' Подчиненная таблица
Rel1.Attributes=dbRelationDeleteCascade ' Разрешить каскадное удаление данных из второй таблицы, когда удаляются связанные данные из первой
' Создание поля отношения и установка свойств
Set Fr=Rel1.CreateField("Number") ' Создание поля отношения с именем Number, в первой таблице должно быть поле с таким же именем.
Fr.ForeignName="Номер" ' Поле отношения во второй таблице Номер.
' Добавление поля к объекту "отношение" и сам объект "отношение" к БД
Rel1.Fields.Append Fr
dbkadr.Relations.Append Rel1
' Закрытие БД
dbkadr.Close
MsgBox "Поздравляем! Вы впервые запустили программу. На Вашем диске была создана БД. Нажмите кнопку Выход, затем запустите программу снова и приступайте к работе."
End Function


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

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

Сейчас этот форум просматривают: Bing-бот и гости: 2

    TopList  
cron