-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4

Invalid link!








Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://www.sql.ru/forum/actualtopics.aspx?bid=4.
Данный дневник сформирован из открытого RSS-источника по адресу http://www.sql.ru/forum/actualrss.aspx?id=4, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

Экспорт полей Запроса в лист Еexcel

Пятница, 25 Марта 2016 г. 13:43 + в цитатник
Помогите пожалуйста что я делаю не так. При нажатии на кнопке выдает
Run-time error 3601 Too few parametrs. Expected 1

Option Compare Database

Private Sub Command2_Click()

Dim rs As DAO.Recordset
Dim db As Database
Dim str As String
Dim abc, abc1 As String
Dim objXL As Object
Dim objWB As Object
Dim objWS As Object


Set objXL = CreateObject("Excel.Application")
Set objWB = objXL.Workbooks.Open("E:\testfile.xlsx")
Set objWS = objWB.Worksheets("A")
Set db = CurrentDb()

str = "SELECT ID_Balance, SumOfA_001, SumOfA_005 FROM QueryTotalStart"
Set rs = db.OpenRecordset(str)
abc = rs("A_001")
abc1 = rs("A_005")



With objWS
.Cells(3, 3).Value = abc
.Cells(4, 3).Value = abc1

End With
objXL.Visible = True

End Sub

http://www.sql.ru/forum/1206911/eksport-poley-zaprosa-v-list-eexcel


БД Accees 2013 .accdb, непомерный рост сетевого трафика при кол-ве пользователей >1

Пятница, 25 Марта 2016 г. 11:57 + в цитатник
Всем хорошего дня!

Есть БД (таблицы с данными и несколько запросов) на файл-сервере. Формат Access 2007-2013 .accdb.

Пользователи присоединяются к базе через интерфес Excel с и использованием ADODB. Часть запросов храниться в виде хард-кода на VBA, часть внутри БД.

Выполнение одних и тех же действий, когда к базе подключен 1 пользователь и когда более различается как 20 сек и 3 мин. Может быть дело в типах блокировки или свойствах курсора соединения, но способа лечения не нашел.
Ниже приложу картинки с сетевым трафиком (там видно, что для 2-х пользователей кол-во передаваемых по сети данных превышает объем БД, хранящейся на файл-сервере - сейчас это 9 МБ).

Вот перечень операций (макс обновление на 400 записей), которые выполняются и в том и другом случае:

transaction_level = SMART_CNN.Cnn.BeginTrans


    '*************************************** _
'РАСЧЕТ Абонентской базы
SQL_query = "SELECT bld_params.* " _
    & "FROM bld_params INNER JOIN Buildings ON bld_params.ID_SU = Buildings.ID_SU WHERE Buildings.Processed=0 " _
    & "ORDER BY bld_params.ID_SU, bld_params.Life_Time;"
Aab_Tkd_RS.CursorType = adOpenKeyset
Aab_Tkd_RS.Open SQL_query, SMART_CNN.Cnn, adOpenKeyset, adLockOptimistic
With Aab_Tkd_RS
    'редактируем рекордсет ~ 400 записей
         предыдущее_значение=![Поле1]
         if(предыдущее_значение<>"") then
               ![Поле1]=![Поле1]*предыдущее_значение*коэффициент_какой-то
         endif
        .Update
        .MoveNext
    Loop
End With
'если что-то пойдет не так то выполнится
If (rez <> "OK") Then
        BasicFunctions.UserDataDisplayError (rez & vbNewLine & "Изменения в модели будут отменены!")
        SMART_CNN.Cnn.RollbackTrans
        GoTo ExecExit
End If
    '***************************************
Aab_Tkd_RS.Close
    
    '*************************************** _
    РАСЧЕТ OPEX
    SQL_query = "DELETE * FROM opex " _
        & "WHERE data_id in (SELECT data_id FROM bld_params WHERE Processed=0);"
    SMART_CNN.Cnn.Execute SQL_query, adExecuteNoRecords, dbFailOnError 'УБИРАЕМ ПРЕДЫДУЩИЕ ДАННЫЕ

SQL_query="UPDATE еще 400 записей"
SMART_CNN.Cnn.Execute SQL_query, adExecuteNoRecords, dbFailOnError
    If (rez <> "OK") Then
        BasicFunctions.UserDataDisplayError (rez & vbNewLine & "Изменения в модели будут отменены!")
        SMART_CNN.Cnn.RollbackTrans
        GoTo ExecExit
    End If
    BasicFunctions.WriteIntoLog 22, "Кол-во домов: " & bld_counter
    '***************************************
    
PrDisplayer.Recharge

    '*************************************** _
    РАСЧЕТ CAPEX
    SQL_query="UPDATE еще 400 записей"
    SMART_CNN.Cnn.Execute SQL_query, adExecuteNoRecords, dbFailOnError
    If (rez <> "OK") Then
        BasicFunctions.UserDataDisplayError (rez & vbNewLine & "Изменения в модели будут отменены!")
        SMART_CNN.Cnn.RollbackTrans
        GoTo ExecExit
    End If
    BasicFunctions.WriteIntoLog 23, "Кол-во домов: " & bld_counter
    '***************************************
    
    
    '*************************************** _
    РАСЧЕТ ВЫРУЧКИ
    SQL_query = "DELETE * FROM Revenue_Profits WHERE data_id in (SELECT data_id FROM bld_params WHERE Processed=0);"
    SMART_CNN.Cnn.Execute SQL_query, adExecuteNoRecords, dbFailOnError 'УБИРАЕМ ПРЕДЫДУЩИЕ ДАННЫЕ
    rez = ProcessRevenueAndProfits(PrDisplayer)'функция открывает рекордсет и редактирует 400 записей, _ 
'так же, как это выполняется в части кода РАСЧЕТ Абонентской базы
    If (rez <> "OK") Then
        BasicFunctions.UserDataDisplayError (rez & vbNewLine & "Изменения в модели будут отменены!")
        SMART_CNN.Cnn.RollbackTrans 
        GoTo ExecExit
    End If
    BasicFunctions.WriteIntoLog 24, "Кол-во домов: " & bld_counter
    '***************************************

    
    '*************************************** _
    РАСЧЕТ Cash Flow
    SQL_query = "DELETE * FROM CashFlow WHERE data_id in (SELECT data_id FROM bld_params WHERE Processed=0);"
    SMART_CNN.Cnn.Execute SQL_query, adExecuteNoRecords, dbFailOnError 'УБИРАЕМ ПРЕДЫДУЩИЕ ДАННЫЕ
    SMART_CNN.Cnn.Execute "CF_data", adExecuteNoRecords, dbFailOnError 'СЧИТАЕМ CF
    BasicFunctions.WriteIntoLog 25, "Кол-во домов: " & bld_counter
    '***************************************
    
'ФИНАЛИЗАЦИЯ РАСЧЕТА
SMART_CNN.Cnn.Execute "UPDATE bld_params SET Processed=1 WHERE Processed=0;", adExecuteNoRecords, dbFailOnError
SMART_CNN.Cnn.Execute "UPDATE buildings SET Processed=1 WHERE Processed=0;", adExecuteNoRecords, dbFailOnError

SMART_CNN.Cnn.CommitTrans
BasicFunctions.WriteIntoLog 27, "Домов: " & bld_counter
'***************************************

При запуске Excel на стороне пользователя происходит соединение с БД:
Public DataWorkBook As Excel.Workbook
Public Log_CNN As SmartCnn 'соединение с лог-файлом
Public SMART_CNN As SmartCnn 'соединение с лог-файлом
Public MyUser As SMART_User
Public SMART_Exec As SMART_Extractor
Public SMART_Ribbon As IRibbonUI
Public button_enable_state As Boolean
#If VBA7 And Win64 Then
    ' 64 битный Excel
    Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongLong)
    Public Declare PtrSafe Function timeGetTime Lib "winmm.dll" () As Long
#Else
    ' 32 битный Excel
    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Public Declare Function timeGetTime Lib "winmm.dll" () As Long
#End If
Function Init() As Boolean 'запускаем все нужные соединения и классы объектов перед работой

Dim cnn_string As String
Dim MySmartCnn As SmartCnn

    Set MyUser = New SMART_User 'СОЗДАЕМ ПОЛЬЗОВАТЕЛЯ, ПОЛУЧАЕМ СЕТЕВОЙ ЛОГИН
    button_enable_state = True 'по умолчанию все элементы ленты активны
    If (ActiveWorkbook Is Nothing) Then
        Exit Function
    End If
    
    Set DataWorkBook = ActiveWorkbook
    
    If Not (BasicFunctions.CheckFilePath(SMART_DB_PATH & "\" & SMART_DB_NAME)) Then
        MsgBox "Не найден файл базы данных SAMRT", vbCritical, "SMART processor"
        Init = False
        Exit Function
    End If
    
    If Not (BasicFunctions.CheckFilePath(SMART_DB_PATH & "\" & LOG_DB_NAME)) Then
        MsgBox "Не найден файл базы данных ведения лога", vbCritical, "SMART processor"
        Init = False
        Exit Function
    End If
    
    'ОПРЕДЕЛЯЕМ РАЗМЕЩЕНИЕ ВРЕМЕННОЙ БД
    user_tmp_db_path = Application.DefaultFilePath

    '*************************************** _
    ПОДКЛЮЧЕНИЕ ЛОГ - ФАЙЛА
    Set Log_CNN = New SmartCnn

    cnn_string = "Provider=Microsoft.ACE.OLEDB.12.0;" _
    & "Data Source=" & SMART_DB_PATH & "\" & LOG_DB_NAME & ";" _
    & "Jet OLEDB:Database Password=********;"
    If Not (Log_CNN.CreateADOConnectionToDB(cnn_string)) Then
        MsgBox "Не удалось подключиться к базе данных LOGa.", vbCritical, "SMART processor"
        Init = False
    End If
    '***************************************
    
    '*************************************** _
    ПОДКЛЮЧЕНИЕ ФАЙЛА БАЗЫ ДАННЫХ
    Set SMART_CNN = New SmartCnn
    cnn_string = "Provider=Microsoft.ACE.OLEDB.12.0;" _
    & "Data Source=" & SMART_DB_PATH & "\" & SMART_DB_NAME & ";" _
    & "Jet OLEDB:Database Password=*********;"
    If Not (SMART_CNN.CreateADOConnectionToDB(cnn_string)) Then
        MsgBox "Не удалось подключиться к базе данных SMART.", vbCritical, "SMART processor"
        Init = False
        Exit Function
    End If
    '***************************************
    
    MyUser.CheckUp (MyUser.WinName)
    'MyUser.CheckUp ("Lis")
    If Not (MyUser.ValidUser) Then
        BasicFunctions.UserDataDisplayError ("У пользователя " & MyUser.WinName & " нет доступа к SMART-модели.")
        Init = False
        Exit Function
    End If
    If (MyUser.Status = "Deleted") Then
        BasicFunctions.UserDataDisplayError ("Ууу разбойник! Пользователю " & MyUser.WinName & vbCrLf _
        & " доступ к SMART-модели заблокирован.")
        Init = False
        Exit Function
    Else
        MyUser.SetCurrentCompName
    End If
    
BasicFunctions.WriteIntoLog 1

Init = True

Exit Function

End Function


Код класса SmartCnn:
Public WithEvents Cnn As ADODB.Connection
Private start_exec_time As Long 'в миллисекундах
Private exec_time As Long 'в миллисекундах
Private exec_timeout As Long 'в секундах
Private Sub Class_Initialize()
    Set Me.Cnn = New ADODB.Connection
    Me.Cnn.CursorLocation = adUseClient
    exec_timeout = SMART_EXEC_TIMEOUT
End Sub
Public Function CreateADOConnectionToDB(cnn_string As String) As Boolean
    
    On Error GoTo ErrHandler

    Me.Cnn.Open cnn_string, "Admin", , adConnectUnspecified
    CreateADOConnectionToDB = True
    Exit Function
    
ErrHandler:
    'BasicFunctions.RaiseError 514
    If (Err.Number = 3705) Then
        MsgBox Err.Description
        CreateADOConnectionToDB = False
        Exit Function
    End If
    BasicFunctions.DisplayError
End Function
Private Sub Cnn_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
    exec_time = BasicFunctions.timeGetTime - start_exec_time
End Sub
Private Sub Cnn_WillExecute(Source As String, CursorType As ADODB.CursorTypeEnum, LockType As ADODB.LockTypeEnum, Options As Long, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
    start_exec_time = BasicFunctions.timeGetTime
    exec_time = 0
End Sub
Public Property Get ExecTime() As Long
    ExecTime = exec_time
End Property
Public Sub CheckExecTimeout()

    If (exec_time <> 0) Then Exit Sub
    If (((BasicFunctions.timeGetTime - start_exec_time) / 1000) > exec_timeout) Then
        BasicFunctions.UserDataDisplayError "Превышен лимит времени в " & exec_timeout & " секунд при привыполнении запроса к модели."
        Me.Cnn.Cancel
    End If

End Sub

Не смотря на то, что устанавливаю свойство соединения
Me.Cnn.CursorLocation = adUseClient
, когда в RunTime смотрю на объект SMART_CNN.Cnn у него это свойство поставлено в adUseClientBatch
Гуру, help plase.

http://www.sql.ru/forum/1206894/bd-accees-2013-accdb-nepomernyy-rost-setevogo-trafika-pri-kol-ve-polzovateley-1


фильтрация по спискам

Четверг, 24 Марта 2016 г. 17:10 + в цитатник
Private Sub FilterForm()

Dim strFilter As String

strFilter = "True"

If [L] > "" Then strFilter = strFilter & " AND [L] Like '*" & LVybor & "*'"
If [N] > "" Then strFilter = strFilter & " AND [N] Like '*" & NVybor & "*'"
Me.Filter = strFilter
Me.FilterOn = True

End Sub

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

http://www.sql.ru/forum/1206778/filtraciya-po-spiskam


Full join

Четверг, 24 Марта 2016 г. 14:10 + в цитатник
Добрый день, подскажите как переделать запрос с inner на full?
Set rs = db.OpenRecordset("Select distinct f.kod25 As №Договора, f.kod_18 as КодКонтрагента, n.namestred as НаименованиеКонтрагента,  f.NumDogKurator as Факт№договораКуратора,  p.NumDogKurator as План№договораКуратора , f.nameUslugi as ФактНаименованиеУслуги, p.nameUslugi as ПланНаименованиеУслуги, u.name_upr as НаименованиеУправления, f.kod_edizm as ФактЕдиницыИзмерения, p.kod_edizm as ПланЕдиницыИзмерения, f.kod_urovuslug as ФактУровеньУслуги, p.kod_urovuslug as ПланУровеньУслуги,f.cost as ФактТарифЗаЕдиницу,p.cost as ПланТарифЗаЕдиницу,f.valuta as ФактВалюта,p.valuta as ПланВалюта,f.procNDS as ФактПроцентНДС, p.procNDS as ПланПроцентНДС, f.coefficient as ФактЦелевойКоэффициент,p.coefficient as ПланЦелевойКоэффициент, " _
& " p.volume01 as ПланОбъемЯнварь,IIF (month=1,f.volume,0) as ФактОбъемЯнварь, p.sum01 as ПланСуммаЯнварь, IIF (month=1,f.sum,0) as ФактСуммаЯнварь, " _
& " p.volume02 as ПланОбъемФевраль,IIF (month=2,f.volume,0) as ФактОбъемФевраль,p.sum02 as ПланСуммаФевраль, IIF (month=2,f.sum,0) as ФактСуммаФевраль, " _
& " p.volume03 as ПланОбъемМарт,IIF (month=3,f.volume,0) as ФактОбъемМарт,p.sum03 as ПланСуммаМарт, IIF (month=3,f.sum,0) as ФактСуммаМарт, " _
& " p.volume04 as ПланОбъемАпрель,IIF (month=4,f.volume,0) as ФактОбъемАпрель,p.sum04 as ПланСуммаАпрель, IIF (month=4,f.sum,0) as ФактСуммаАпрель, " _
& " p.volume05 as ПланОбъемМай,IIF (month=5,f.volume,0) as ФактОбъемМай,p.sum05 as ПланСуммаМай, IIF (month=5,f.sum,0) as ФактСуммаМай, " _
& " p.volume06 as ПланОбъемИюнь, IIF (month=6,f.volume,0) as ФактОбъемИюнь,p.sum06 as ПланСуммаИюнь, IIF (month=6,f.sum,0) as ФактСуммаИюнь, " _
& " p.volume07 as ПланОбъемИюль,IIF (month=7,f.volume,0) as ФактОбъемИюль,p.sum07 as ПланСуммаИюль, IIF (month=7,f.sum,0) as ФактСуммаИюль, " _
& " p.volume08 as ПланОбъемАвгуст,IIF (month=8,f.volume,0) as ФактОбъемАвгуст,p.sum08 as ПланСуммаАвгуст, IIF (month=8,f.sum,0) as ФактСуммаАвгуст, " _
& " p.volume09 as ПланОбъемСентябрь,IIF (month=9,f.volume,0) as ФактОбъемСентябрь,p.sum09 as ПланСуммаСентябрь, IIF (month=9,f.sum,0) as ФактСуммаСентябрь, " _
& " p.volume10 as ПланОбъемОктябрь,IIF (month=10,f.volume,0) as ФактОбъемОктябрь,p.sum10 as ПланСуммаОктябрь, IIF (month=10,f.sum,0) as ФактСуммаОктябрь, " _
& " p.volume11 as ПланОбъемНоябрь,IIF (month=11,f.volume,0) as ФактОбъемНоябрь,p.sum11 as ПланСуммаНоябрь, IIF (month=11,f.sum,0) as ФактСуммаНоябрь, " _
& " p.volume12 as ПланОбъемДекабрь,IIF (month=12,f.volume,0) as ФактОбъемДекабрь,p.sum12 as ПланСуммаДекабрь, IIF (month=12,f.sum,0) as ФактСуммаДекабрь " _
& " From SkidPlan as p, SkidFact as f, nciupr as u, ncistred as n, " _
& " f full join n on f.kod_18=n.nStrEd, " _
& " f full join u ON u.kod_upr =f.kod_upr " _
& " Where f.kod25= '" & numdog & "'  and f.kod_upr= '" & ctrl & "' and f.nameUslugi= '" & usluga & "' and p.kod_25='" & numdog & "' and p.nameUslugi='" & usluga & "' and p.kod_upr='" & ctrl & "' ")

http://www.sql.ru/forum/1206735/full-join


Новый Excel в dbf

Четверг, 24 Марта 2016 г. 14:08 + в цитатник
Возможно ли преобразовать файл Excel 2007 в файл в формате dbf? и как, если возможно?

http://www.sql.ru/forum/1206734/novyy-excel-v-dbf


Как преобразовать текст в выражение

Четверг, 24 Марта 2016 г. 13:45 + в цитатник
Добрый день.
Есть функция:
Public Function fncПроверка(strВидПроверки As String) As Boolean
    Select Case fncКодПроверки(strВидПроверки)
        Case 1                                                                  'Некорректный символ
            If InStr(1, strКлавиатура, strНекорректныйСимвол) <> 0 Then
                fncПроверка = True
            End If
        Case 4                                                                  'Серийные уже есть
            strЗапрос = "SELECT u.СерийныйНомер FROM u WHERE u.КодТовара =" _
                & frmФорма!ПолеАртикул                                        
            Set rst = dbТекущая.OpenRecordset(strЗапрос, dbOpenDynaset)
                If rst.EOF = False Then
                    fncПроверка = True
                    ВставитьКоммент 7
                End If
        Case 10                                                              
                If strКлавиатура = "00001" Then                              
                    fncПроверка = True
                    ВставитьКоммент 14
                End If
        Case 11                                                                 'Разная длина штрих-кодов
                If Len(frmФорма!ПолеFrom) <> Len(frmФорма!ПолеTo) Then
                    fncПроверка = True
                    ВставитьКоммент 15
                End If

Функция выполняет одну из проверок и возвращает ИСТИНА/ЛОЖЬ. Но вариантов проверки предполагается несколько сотен, в итоге текст самой функции станет не читаемым.
ХОЧЕТСЯ, чтобы функция получила условие проверки в виде текстовой строки, поняла, что это логическое выражение и выполнила его.Что-то вроде этого:
                a="Len(frmФорма!ПолеFrom) <> Len(frmФорма!ПолеTo)"
If  Then
                    fncПроверка = True
                    ВставитьКоммент 15
                End If

http://www.sql.ru/forum/1206728/kak-preobrazovat-tekst-v-vyrazhenie


Запрос по повторениям

Четверг, 24 Марта 2016 г. 12:27 + в цитатник
Комрады, приветствую. Прошу помощи.
Есть таблица вида
клиентдатагород
1 24.02.2016 Москва
1 25.02.2016 Москва
1 26.02.2016 Питер
1 27.02.2016 Питер
1 02.03.2016 Воронеж
2 24.02.2016 Краснодар
2 25.02.2016 Краснодар
2 27.02.2016 Сочи

Нужно по каждому клиенту вытащить город с максимальным количеством повторений. Если есть 2 и более города с одинаковым количеством повторений - вытащить тот, по которому зафиксирована последняя дата.
Результат
Клиент город повторений
1 Питер 2
2 Краснодар2

_____________________
А что на самом деле хотел сказать Frost_Imp никто не знает, так как администрация форума попросила его быть вежливым.

http://www.sql.ru/forum/1206699/zapros-po-povtoreniyam


Двоятся записи

Четверг, 24 Марта 2016 г. 11:44 + в цитатник
Коллеги, приветствую !
Задача следующая, есть таблица с продажами клиенту, есть таблица с оплатами от клиента
пытался собрать запрос для получения акта сверки, и всё бы правильно получилось, если бы было не более одной операции в день.
Поясню...
Если две операции по продаже, то напротив каждой правильной операции по продаже проставляет одну и ту же операцию по оплате, т.е. оплата начинает двоиться
Запрос выглядит следующим образом
SELECT DISTINCT a.opDay, b.operOrder, c.payment
FROM ((SELECT operDate as opDay from operations where cliID=9
union
select payDate as opDay from oplata where cliID=9)  AS a
LEFT JOIN operations AS b ON a.opDay=b.operDate)
LEFT JOIN oplata AS c ON a.opDay=c.payDate
ORDER BY a.opDay;

Вот результат
Картинка с другого сайта.

Посоветуйте, как можно поправить ситуацию...

http://www.sql.ru/forum/1206688/dvoyatsya-zapisi


Использую transform, и мне необходимо добавить поле Sum(выручка, себест, маржа.).

Среда, 23 Марта 2016 г. 17:45 + в цитатник
Подскажите пож-ста. С помощью transform вывожу кол-во всего значение StageProject добавок мне надо посчитать Sum(выручка, себест, маржа.) и всего кол-во запросов по Users
TRANSFORM Min(X.N) AS [Min-N]
SELECT Y,Users, P, ord
FROM (SELECT Y,Users,P,StageProject,ord,Count(1) AS N FROM  qdfSRC GROUP BY Y,StageProject,Users,ord,P
	UNION ALL 
	SELECT T.Y,T.Users,T.P,T.StageProject & "Проц",T.ord,Round(Count(1)/Min(S.N)*100) FROM  qdfSRC T INNER JOIN 
	(SELECT Y,Count(1) AS N FROM  qdfSRC GROUP BY Y) S ON T.Y=S.Y
	 GROUP BY T.P,T.Y,T.Users, T.StageProject,T.ord   
	)  AS X
GROUP BY Y,Users, ord,P
ORDER BY Y, Users,ord
PIVOT X.StageProject In ('Реализация*','Реализация*Проц','Отказ','ОтказПроц','Выслано предложение','Выслано предложениеПроц','Получен запрос','Получен запросПроц','Подтвержден подгот-ка*','Подтвержден подгот-ка*Проц');

qdfSRC
SELECT UserName1 AS Users, Amount AS AmountPrice, CostAmount AS AmountCost, MarjzaAmountCalc AS Marja, DealStage AS StageProject,  "Поступившие заявки" AS P, 1 AS ord, Year(DateClosed) AS Y
FROM qdfDeals;

http://www.sql.ru/forum/1206584/ispolzuu-transform-i-mne-neobhodimo-dobavit-pole-sum-vyruchka-sebest-marzha


Вызов пользовательской функции Access из Excel

Среда, 23 Марта 2016 г. 15:34 + в цитатник
Всем привет.
Много уже было написано об этом, но решения пока не нашел. Есть необходимость использования пользовательских функций, написанных в рабочей БД, в рабочих листах Excel. Получилось написать в Excel некую корявую функцию, которая хоть как-то работает.

 Function GetDateFromAccess(Arg As String) As Date
    Dim appAcc As Access.Application
    Dim strPath As String
    
    strPath = "C:\MyDatabase.accdb"
    
    Set appAcc = CreateObject("Access.Application")
    appAcc.OpenCurrentDatabase strPath
    GetDateFromAccess = appAcc.Run("GetDate", Arg)
End Function


"Корявость" состоит в том, что открывается сама база, и это совсем не вариант. Базу, конечно, можно скрыть и закрыть в самом коде, но мне этот вариант не нравится. База открывается достаточно долго около (5-10 секунд). т.к. при загрузке выполняются ряд процедур. Использование такой функции в Excel становится нецелесообразным.
Помогите, пожалуйста, решить задачу без открытия самой БД.

Заранее благодарю.

http://www.sql.ru/forum/1206562/vyzov-polzovatelskoy-funkcii-access-iz-excel


Связанные таблицы

Среда, 23 Марта 2016 г. 11:05 + в цитатник
Изменяются ли связанные таблицы, если я редактирую их в Access?

http://www.sql.ru/forum/1206512/svyazannye-tablicy


Неправильно выделяются строчки в списке

Среда, 23 Марта 2016 г. 10:00 + в цитатник
Имеется некоторый список АС(автоматизированная система) при выборе значения из которого из базы данных подгружается
список зданий и помещений.Из них выделяются те, которые принадлежат данной АС.
Так вот..при первом клике на список АС все нормально выделяется,а после если кликать 2,3 раз и т.д. выделяется неправильно.

Список строчек которые нужно выделять загружается из запроса в белый список справа(ListSelection).
Код изменения выделения списка помещений:
Private Sub AC_Click()
Me.[Buildings].Requery
For i = 0 To Me![Buildings].ListCount
Me![Buildings].Selected(i) = False
Next

For i = 0 To Me![Buildings].ListCount
For j = 0 To Me![ListSelection].ListCount
If Me![Buildings].Column(1, i) = Me![ListSelection].Column(1, j) Then
Me![Buildings].Selected(i) = True
End If
Next
Next

http://www.sql.ru/forum/1206499/nepravilno-vydelyautsya-strochki-v-spiske


Невозможен запуск запроса на выборку

Среда, 23 Марта 2016 г. 08:57 + в цитатник
Добрый день, подскажите можно ли как то запустить сохраненный запрос и потом обратиться к его Fields?
Пытался сделать как в FAQ
-----FAQ
Dim q As DAO.QueryDef
  Set q = CurrentDb.QueryDefs("ИмяЗапроса")
  q.Parameters("[Введите начальную дату:]").Value=Cdate(Ваше_значение_параметра)
'и т.д. пока не переберете все параметры
  q.Execute
  q.close: set q=Nothing

----У меня
Dim q As DAO.QueryDef
  Set q = CurrentDb.QueryDefs("ReportD")
  q.Execute
Выходит ошибка на Execute

http://www.sql.ru/forum/1206492/nevozmozhen-zapusk-zaprosa-na-vyborku


Помогите. Ошибка Access

Вторник, 22 Марта 2016 г. 23:17 + в цитатник
Помогите, пожалуйста, разобраться с ошибкой Access.

При введении полей g и tarif программа должна выдавать произведение значений этих полей в поле z (после обновления). Формулы записаны правильно. Вместо этого пишет ошибку

Ссылка на ошибку. http://cs629231.vk.me/v629231232/3d2ef/5Jl0z5XMz08.jpg

Уверен, у вас это не займёт много времени. База в прикреплённых файлах или сдесь: http://vk.com/doc72467232_437373761?hash=eb3912b97b77437140&dl=36e5e59d7322790596

Спасибо.

http://www.sql.ru/forum/1206464/pomogite-oshibka-access


Связь записи таблицы с другими записями в той же таблице

Вторник, 22 Марта 2016 г. 22:20 + в цитатник
Пытаюсь решить следующую задачу.
Есть таблица - Публикации. Каждая публикация имеет список литературы, элементами которого являются другие записи из этой же таблицы (Публикации).
Как реализовать такую структуру, с возможностью узнать список публикаций, на которые ссылается данная публикация и узнать список публикаций, которые ссылаются на данную публикацию.

http://www.sql.ru/forum/1206461/svyaz-zapisi-tablicy-s-drugimi-zapisyami-v-toy-zhe-tablice


Блокировка доступа к TreeView

Вторник, 22 Марта 2016 г. 19:21 + в цитатник
Добрый день!
Проблема в следующем:
Есть дерево TreeView. В какой то момент необходимо закрыть к нему доступ, что вполне решается:

TreeView0.Enabled = FALSE


Но !!! при этом дерево проматывается вверх до первой строчки (первого нода) и соответственно конец списка (а мы например там "работали" ) не виден :(

Есть какие идеи? Т.е. нужно (на время) закрыть доступ к TreeView, чтобы он не проматывался на верх - т.е. зафиксировать.

http://www.sql.ru/forum/1206446/blokirovka-dostupa-k-treeview


Форма навигации

Вторник, 22 Марта 2016 г. 15:47 + в цитатник
Есть исходные формы, из них хочу создать форму навигации.
Но в созданной форме навигации не работают макросы исходных форм.
Отображает диалоговое окно Введите значение параметра.
Помогите пожалуйста.

http://www.sql.ru/forum/1206410/forma-navigacii


При закрытии формы не сохранить изменении

Вторник, 22 Марта 2016 г. 14:50 + в цитатник
Здраствуйте!
У меня есть код на кнопку:
Private Sub Кнопка1_Click()
DoCmd.Close , , acSaveNo
End Sub

Как будет выглядит код при закритии форму?
Private Sub Form_Close()
???
End Sub

За ранее спасибо!

http://www.sql.ru/forum/1206399/pri-zakrytii-formy-ne-sohranit-izmenenii


Запрос

Вторник, 22 Марта 2016 г. 10:05 + в цитатник
Добрый день. подскажите пожалуйста как сделать запрос до определенного значения?
Например в таблице есть столбцы
| sum1 | vol1 | sum2 | vol2 |... | sum12 | vol12 |
нужно отобразить значения до 5 столбца
Результат должен быть таким
| sum1 | vol1 | sum2 | vol2 | sum3 | vol3 | sum4 | vol4 | sum5 | vol5 |

http://www.sql.ru/forum/1206334/zapros


ListBox не читает больше 65534 строк?

Вторник, 22 Марта 2016 г. 08:21 + в цитатник
Access 2007, Есть форма для выборки данных по людям с определенными критериями. Выбираю в List, хочу вывести количество отобранных записей. Если отобрано немного записей - то все корректно, если число большое - выводится всегда 65534. Для подсчета количества записей использую сам List:
 qsql = "Select " & Whatstr & " From PERSONS Left Join DDPROF_OSM on Persons.P_Num=DDProf_OSM.P_num where " & wherestr & " group by " & GroupByStr & " order by [SNAME], [FI], [SI]"
    frm.List1.RowSource = qsql
    frm.Kol_Label.Caption = "Количество отобрано: " & Format(frm.List1.ListCount - 1)

Пробовала делать через отдельный Recordset:
recordset.MoveLast
recordset.RecordCount

работает корректно, но в два раза дольше (один запрос грузится в List, второй отдельный считает кол-во записей). Очень не хочется лишний раз нагружать базу. Можно ли одним запросом и данные в лист вывести и количество адекватное увидеть?

http://www.sql.ru/forum/1206319/listbox-ne-chitaet-bolshe-65534-strok



Поиск сообщений в rss_sql_ru_access_programming
Страницы: 353 ... 198 197 [196] 195 194 ..
.. 1 Календарь