Экспорт полей Запроса в лист Еexcel |
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 |
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 '***************************************
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
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
|
фильтрация по спискам |
|
Full join |
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 & "' ")
|
Новый Excel в dbf |
|
Как преобразовать текст в выражение |
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
|
Запрос по повторениям |
|
|
|
Двоятся записи |
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;
|
Использую transform, и мне необходимо добавить поле Sum(выручка, себест, маржа.). |
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 ('Реализация*','Реализация*Проц','Отказ','ОтказПроц','Выслано предложение','Выслано предложениеПроц','Получен запрос','Получен запросПроц','Подтвержден подгот-ка*','Подтвержден подгот-ка*Проц');
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;
|
Вызов пользовательской функции Access из 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
http://www.sql.ru/forum/1206562/vyzov-polzovatelskoy-funkcii-access-iz-excel
|
Связанные таблицы |
|
Неправильно выделяются строчки в списке |
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
|
Невозможен запуск запроса на выборку |
-----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 |
|
Связь записи таблицы с другими записями в той же таблице |
http://www.sql.ru/forum/1206461/svyaz-zapisi-tablicy-s-drugimi-zapisyami-v-toy-zhe-tablice
|
Блокировка доступа к TreeView |
TreeView0.Enabled = FALSE
http://www.sql.ru/forum/1206446/blokirovka-dostupa-k-treeview
|
Форма навигации |
|
При закрытии формы не сохранить изменении |
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
|
Запрос |
|
ListBox не читает больше 65534 строк? |
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.MoveLast recordset.RecordCount
http://www.sql.ru/forum/1206319/listbox-ne-chitaet-bolshe-65534-strok
|