Deutsch

Воспоминание программирование на VB 08.04.2024

1333  
uscheswoi_82 коренной житель08.04.24 15:01
uscheswoi_82
08.04.24 15:01 
Последний раз изменено 08.04.24 19:00 (uscheswoi_82)

Всем привет! Тут я писал, как мы в деньгах купались, а в этой теме я напишу, насколько программировать на Visual Basic очень просто. Когда я был маленьким, у отца был дома компьютер, и мне компьютер давали на 1 час, и я игрался с GW-Basic и Turbo C. Компьютер отцу дала его фирма, и он работал на дому. От соседей мы тщательно скрывали. В это время моя мать разьезжала по всему миру. Вообще программирование это не сложно, и я думаю каждый человек может освоить программирование. Самый простой язык программирование это БЕЙСИК. Когда человек что-то планирует, то он как бы составляет программу. Вот пример:

Если в субботу будет хорошая погода, то я поеду в торговый центр. 
Прежде чем я пойду в торговый центр, я зайду в банк, чтобы снять деньги. 
Если погода будет плохой, то я буду сидеть дома, и буду лазить на 
компьютере в интернете.


Как думает программист:

Если запустится приложение, то показать форму и сменить заголовок окна на "Hallo".


На Visual Basic 6.0 это будет так:

Sub Main()
  Form1.Caption = "Hallo"
  Form1.Show
End Sub


Только в настройках нужно указать, что нужно загружаться с модуля Main:



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



Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#1 
uscheswoi_82 коренной житель08.04.24 16:07
uscheswoi_82
NEW 08.04.24 16:07 
в ответ uscheswoi_82 08.04.24 15:01, Последний раз изменено 08.04.24 18:47 (uscheswoi_82)

Конструкция языка БЕЙСИК:

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
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#2 
uscheswoi_82 коренной житель08.04.24 18:57
uscheswoi_82
NEW 08.04.24 18:57 
в ответ uscheswoi_82 08.04.24 16:07, Последний раз изменено 08.04.24 22:34 (uscheswoi_82)

Тогда в конце 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
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#3 
uscheswoi_82 коренной житель08.04.24 22:28
uscheswoi_82
NEW 08.04.24 22:28 
в ответ uscheswoi_82 08.04.24 18:57

Чтобы записать в БД спомощью 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
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#4 
uscheswoi_82 коренной житель10.05.24 15:20
uscheswoi_82
NEW 10.05.24 15:20 
в ответ uscheswoi_82 08.04.24 22:28

Чтобы загрузить данные в 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


Результат:



Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#5 
uscheswoi_82 коренной житель26.05.24 06:10
uscheswoi_82
NEW 26.05.24 06:10 
в ответ uscheswoi_82 10.05.24 15:20

Как уже выше писал, достаточно стандартных компонентов, чтобы делать неплохие деньги.

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.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#6 
uscheswoi_82 коренной житель28.05.24 05:20
uscheswoi_82
NEW 28.05.24 05:20 
в ответ uscheswoi_82 26.05.24 06:10

Всем доброе утро!

Короче посмотрел элементы Visual Basic 6.0 Professional Edition (слева на скриншоте) и Visual Basic 6.0 Enterprise Edition (справа на скриншоте), выявил разницу что у Professional Edition нет компонента MSRDC,я его выделил красным цветом см.:



Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#7 
uscheswoi_82 коренной житель28.05.24 07:04
uscheswoi_82
NEW 28.05.24 07:04 
в ответ uscheswoi_82 28.05.24 05:20

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





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



Вуаля:



Когда делаешь программное оспечение, которое работает с базой данных, сетка очень нужна. Спомощью сетки можно отображать информацию из базы данных, и выбирать нужную информацию.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#8 
uscheswoi_82 коренной житель28.05.24 07:13
uscheswoi_82
NEW 28.05.24 07:13 
в ответ uscheswoi_82 28.05.24 07:04

Эту сетку т.е. DBGrid создала не сама фирма Microsoft, а от некой APEX Software Corparation, специально для Microsoft:



Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#9 
uscheswoi_82 коренной житель01.06.24 14:21
uscheswoi_82
NEW 01.06.24 14:21 
в ответ uscheswoi_82 28.05.24 07:13

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


Спомощью этих компонентов можно было быстро создать мощное и современное Windows приложение, и заработать кучу денег.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#10 
uscheswoi_82 коренной житель23.06.24 21:01
uscheswoi_82
NEW 23.06.24 21:01 
в ответ uscheswoi_82 01.06.24 14:21

Всем добрый вечер! Продолжу дискуссию программирования на 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

Вуаля!, а вот так работает:



Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#11 
uscheswoi_82 коренной житель29.06.24 05:28
uscheswoi_82
NEW 29.06.24 05:28 
в ответ uscheswoi_82 23.06.24 21:01

Продолжим дискусию про программирования на 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
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#12 
uscheswoi_82 коренной житель02.07.24 00:09
uscheswoi_82
NEW 02.07.24 00:09 
в ответ uscheswoi_82 29.06.24 05:28

Продолжим разговор про изменения размера, работает так, но иногда происходит ошибка, т.к. размеры элемента т.е. ширина = 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
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#13