• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Не обновляется Msflexgrid из рекордсета

  • Автор темы h7h2vC
  • Дата начала
Статус
Закрыто для дальнейших ответов.
H

h7h2vC

Здравствуйте, есть процеду добавления записи в таблицу ACCESS:
Код:
cn.Execute "INSERT INTO Variants (VariantNum, Step, ElementCode, work_code, WorkPlaceID, RoutingID) " & _
"VALUES (" & cVariantNum & ", '" & txtStep.text & "', '" & cPart & "', '" & cWork_code & "', '" & cRM_code & "', " & cRoutingID & ")"
И есть процедурка обновления MSFlexGrid1 из рекордсета, вызываемая сразу после добавления:
Код:
'Заполняем таблицу новым маршрутом
Public Sub DrawNewRoute(cn As ADODB.Connection, frmName As Form)
Dim str_sql As String
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset

Call CloseADOConnection(cn) 'Закрываем подключение
Call PerformADOConnection(cn) 'Открываем подключение

str_sql = "SELECT Variants.Step, works.work_name, Structure.StructureName AS Name, Routing.Norm, Routing.Norm2, Variants.VariantID, Routing.RoutingID, Variants.WorkPlaceID, Variants.work_code, Variants.Step, works.work_name " & _
"FROM (((Structure INNER JOIN Work_WorkPlace ON Structure.StructureID = Work_WorkPlace.WorkPlaceID) INNER JOIN works ON Work_WorkPlace.work_code = works.work_code) INNER JOIN Routing ON (works.work_code = Routing.work_code) AND (Structure.StructureID = Routing.WorkPlaceID)) INNER JOIN Variants ON (Variants.RoutingID = Routing.RoutingID) AND (Variants.work_code = works.work_code) AND (Structure.StructureID = Variants.WorkPlaceID) AND (Routing.RoutingID = Variants.RoutingID) " & _
"WHERE (((Variants.ElementCode) = '" & Form3.DataGrid1.Columns(1).text & "')) " & _
"AND Variants.VariantNum = " & CInt(frmName.cboVariantNum.text) & " " & _
"ORDER BY Variants.Step"

rst.Open str_sql, cn, adOpenDynamic, adLockReadOnly, adCmdText
rst.Requery
Дело в том, что если было 3 записи, мы добавили 1, то rst.RecordCount все равно будет равняться 3 сразу после добавления и обновления. Если же скопировать этот запрос (str_sql), сразу после добавления, в ACCESS то количество записей вернется верное, т.е. 4
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!