5 строк кода

Как писать приложения на MS Access

Archive for the ‘между делом’ Category

Проблема с UNION

Комментариев нет

UNION
Если объединить данные из двух таблиц, при этом в первом запросе поле определено как Null As T_POLE. А во втором запросе поле T_POLE существует в таблице и содержит данные. То T_POLE в результирующем наборе не будет содержать данные. Чтобы данные появились необходимо определить поле, например, так " " As T_POLE.

Не работает:

SELECT Null As T_POLE FROM first_table
UNION ALL
SELECT T_POLE FROM second_table

Работает

SELECT T_POLE FROM second_table
UNION ALL
SELECT Null As T_POLE FROM first_table

До встречи!

(с) Скоков Сергей

Подписаться на: RSS или e-mail рассылку или добавить в ЖЖ друзья.

Written by Сергей Скоков

Февраль 28th, 2011 at 9:31 дп

Метод MoveFirst

Комментариев нет

Я очень часто замечаю, что многие программисты (как опытные так и новички ) при работе c Recordset библиотеки DAO или ADO, перед началом работы с данными вызывают метод MoveFirst. Это похоже на параною.

Тогда код выглядит примерно, так:

    Dim rst As DAO.Recordset
    
    Set rst = CurrentDb.OpenRecordset("tbl1", dbOpenDynaset)

    If Not rst.BOF Then
        rst.MoveFirst
    End If
    
    Do While Not rst.EOF
        '-- ...
        rst.MoveNext
    Loop
    
    rst.Close

Смысл этого действа мне не понятен. В документации четко написано:

When you open a Recordset, the first record is current and the BOF property is False. If the Recordset contains no records, the BOF property is True, and there is no current record.

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

До встречи!

(с) Скоков Сергей

Подписаться на: RSS или e-mail рассылку или добавить в ЖЖ друзья.

Written by Сергей Скоков

Апрель 26th, 2010 at 10:57 пп