Воспоминание программирование на VB 08.04.2024
Всем привет! Тут я писал, как мы в деньгах купались, а в этой теме я напишу, насколько программировать на Visual Basic очень просто. Когда я был маленьким, у отца был дома компьютер, и мне компьютер давали на 1 час, и я игрался с GW-Basic и Turbo C. Компьютер отцу дала его фирма, и он работал на дому. От соседей мы тщательно скрывали. В это время моя мать разьезжала по всему миру. Вообще программирование это не сложно, и я думаю каждый человек может освоить программирование. Самый простой язык программирование это БЕЙСИК. Когда человек что-то планирует, то он как бы составляет программу. Вот пример:
Если в субботу будет хорошая погода, то я поеду в торговый центр. Прежде чем я пойду в торговый центр, я зайду в банк, чтобы снять деньги. Если погода будет плохой, то я буду сидеть дома, и буду лазить на компьютере в интернете.
Как думает программист:
Если запустится приложение, то показать форму и сменить заголовок окна на "Hallo".
На Visual Basic 6.0 это будет так:
Sub Main() Form1.Caption = "Hallo" Form1.Show End Sub
Только в настройках нужно указать, что нужно загружаться с модуля Main:

А вот и результат:

Моя ФЛ Он и ОнаКонструкция языка БЕЙСИК:
FOR:
FOR переменная TO до STEP шаг ... NEXT переменная Пример: FOR I=0 TO 10 PRINT I NEXT I
WHILE:
WHILE условие ... WEND Пример: WHILE TRUE PRINT "Привет мир!" WEND
DO WHILE ... LOOP:
DO WHILE условие ... LOOP Пример i=0 DO WHILE NOT i = 1 PRINT "Привет мир!" LOOP
IF:
IF условие THEN ... END IF IF условие THEN ... ELSE IF условие THEN ... ELSE ... END IF Пример: IF a == 0 THEN PRINT "A = 0" ELSE PRINT "A <> 0" END IF
SELECT CASE:
SELECT CASE переменная
CASE значение1:
...
CASE значение2 TO значение 3:
...
CASE ELSE:
...
END SELECT
Пример:
SELECT CASE temp
CASE 0 TO 9:
PRINT "Холодно"
CASE 10 T0 20:
PRINT "Тепло"
CASE 21 TO 30:
PRINT "Жарко"
CASE ELSE:
PRINT "Не знаю"
END SELECT
Моя ФЛ Он и ОнаТогда в конце 90х и начале 2000х, когда появился Visual Basic 6.0 чтобы хорошие деньги зарабатывать, в принципе достаточно было и вот этих стандартных компонентов:

Чтобы обратиться к БД, нужно её сначало создать а потом подключить библиотеку к проекту. Я буду создавать в Microsoft Access 2000, но БД можно создать и в VisData:

Вот так выглядет VisData:

Потом нужно подключить библиотеку DAO к проекту, я подключу Microsoft DAO 3.6 Object Library:

Чтобы прочитать из базы данных записи, нужно написать следующий код:
Dim rec As Recordset
Dim db As Database
Private Sub Form_Load()
On Error Resume Next
Set db = OpenDataBase("C:\test2024_2\Neuer_Ordner\db1.mdb")
Set rec = db.OpenRecordset("SELECT * FROM Ludi")
Do While Not rec.EOF
Debug.Print rec("Imya") & " " & rec("Familiya") & " " & rec("Datarozhdeniya")
rec.MoveNext
Loop
End Sub
В окне отладчика увидите такое:
Andrey Popkov 01.03.1980 Anna Petruchina 05.10.1981
Моя ФЛ Он и ОнаЧтобы записать в БД спомощью DAO, не нужно писать SQL-запрос, достаточно сделать так:
Dim db As Database
Dim rec As Recordset
On Error Resume Next
Set db = OpenDatabase("C:\test2024_2\nnn\db1.mdb")
Set rec = db.OpenRecordset("Ludi")
rec.AddNew
rec("Imya") = Me.Text1.Text
rec("Familiya") = Me.Text2.Text
rec("Datarozhdeniya") = Me.Text3.Text
rec.Update
Моя ФЛ Он и ОнаЧтобы загрузить данные в ComboBox нужно написать следующий код:
Dim rec As Recordset
Dim db As Database
Private Sub Form_Load()
On Error Resume Next
Set db = OpenDatabase("C:\vbtest\biblio.mdb")
Set rec = db.OpenRecordset("Authors")
Do While Not rec.EOF()
'Au_ID Author
Me.cboAuthors.AddItem rec.Fields("Author")
Me.cboAuthors.ItemData(Me.cboAuthors.NewIndex) = rec.Fields("Au_ID")
rec.MoveNext
Loop
Me.cboAuthors.ListIndex = 0
End SubРезультат:

Моя ФЛ Он и ОнаКак уже выше писал, достаточно стандартных компонентов, чтобы делать неплохие деньги.
1. Короче чтобы считать данные из базы данных достаточно элемент управления Data налепить на форму (слева это иконка элемента Data в ToolBox в Microsoft Visual Basic 6.0, справа сам элемент Data, но под названием Data1)

2. Короче в элемент Data, в форме он называется Data1, нужно в свойстве Connect указать допустим Access 2000, а в свойстве DatabaseName указать имя файла базы данных, в нашей ситуации это db4.mdb:

3. Дальше, нужно в элементе Data1 в свойстве RecordSource выбрать таблицу, в нашем случае таблица называется tblMain:

4. В элементе поле, ну или в TextBox, в данном случае в Text1, в свойствах DataSource нужно выбрать элемент Data1, и в свойстве DataField, нужно выбрать поле из таблицы, в данном случае из таблицы tblMain, а поле Name:

5. Если запустить программу, то отобразятся данные из базы данных, вуаля!:

Но в Microsoft Visual Basic 6.0 начиная с Professional Edition идёт много элементов управления, а в Microsoft Visual Basic 6.0 Enterprise Edition их ещё больше, чем в Microsoft Visual Basic 6.0 Professional Edition.
Моя ФЛ Он и ОнаВсем доброе утро!
Короче посмотрел элементы Visual Basic 6.0 Professional Edition (слева на скриншоте) и Visual Basic 6.0 Enterprise Edition (справа на скриншоте), выявил разницу что у Professional Edition нет компонента MSRDC,я его выделил красным цветом см.:

Моя ФЛ Он и ОнаТеперь расскажу, про сетку. Налепим навигатор Data1, выберим ту же базу данных, и RecordSource tblMain см.:


Налепим сетку DBGrid, и в DataSource выберим навигатор Data1, т.е. свяжим сетку с база данных:

Вуаля:

Когда делаешь программное оспечение, которое работает с базой данных, сетка очень нужна. Спомощью сетки можно отображать информацию из базы данных, и выбирать нужную информацию.
Моя ФЛ Он и ОнаЭту сетку т.е. DBGrid создала не сама фирма Microsoft, а от некой APEX Software Corparation, специально для Microsoft:

Моя ФЛ Он и ОнаПродолжим болтавню про Visual Basic 6.0, и будем дальше вспоминать то золотое время. Выше я показывал список компонентов как для VB6 Professional, так и для VB6 Enterprise, но вообще-то на самом деле было на много больше компонентов, вот полный список компонентов для VB 6.0 Enterprise Edition, т.е. в сумме где-то примерно 78 компонентов:

Спомощью этих компонентов можно было быстро создать мощное и современное Windows приложение, и заработать кучу денег.
Моя ФЛ Он и ОнаВсем добрый вечер! Продолжу дискуссию программирования на Visual Basic 6.0. Хочу поговорить про сетку. Есть такая сетка

По первой колонки "ЧеловекID" нам нужно получить идентификатор, но нам нужно спрятать эту колонку вот так, т.е. колонка "ЧеловекID" будет иметь ширину=0:

Когда будем нажимать на сетку, по событию RowColChange нужно проверять значения поле "ЧеловекID", DataGrid1.Columns(0).Text как раз и возвращает значение поле "ЧеловекID", вот код:
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Me.Text1.Text = Me.DataGrid1.Columns(0).Text
End SubВуаля!, а вот так работает:

Моя ФЛ Он и ОнаПродолжим дискусию про программирования на Visual Basic. В Delphi и C++ Builder была уже в 1998 году возможность автоматически менять размеры элементов на форме когда меняешь размер формы, это назывется анкеры, ну или по английски Anchors (AnchorLeft, AnchorTop, AnchorRight, AnchorBottom), а в Visual Basic 6.0 не было Anchors, они появились в Visual Studio .NET 2002 (т.е. Visual Studio 7.0), и поэтому нужно было самому менять размер элементов на форме при изменение размер формы, там было событие Form_Resize, вот пример кода Me - текущая форма, Text1 - текстовое поле TextBox, когда расширяется форма, то и изменяется размер текстового поле т.е. TextBox:
Private Sub Form_Resize() Me.Text1.Height = Me.ScaleHeight - Me.Text1.Top - 10 Me.Text1.Width = Me.ScaleWidth - Me.Text1.Left - 10 End Sub
Моя ФЛ Он и ОнаПродолжим разговор про изменения размера, работает так, но иногда происходит ошибка, т.к. размеры элемента т.е. ширина = 0 и высота = 0 не допустимы, см.:

Чтобы не было ошибки, нужно написать так On Error Resume Next, тогда не будет ошибки при изменение размера окна:
Private Sub Form_Resize() On Error Resume Next Me.Text1.Height = Me.ScaleHeight - Me.Text1.Top - 10 Me.Text1.Width = Me.ScaleWidth - Me.Text1.Left - 10 End Sub
Моя ФЛ Он и Она