Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Params в SQL запросе, Работа с БД. 
:(
    Опции темы
Mephisto
Дата 27.1.2004, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Люди, есть маленькая Stored Procedure в которой есть два параметра. Как мне передать в неё параметры перед её запуском?
Спасибо всем кто ответит.
PM   Вверх
Mephisto
Дата 27.1.2004, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Вот небольшой код (для наглядности)
Цитата
Private Sub cmdProba_Click()
    Dim dbs As Database
    Dim rst As Recordset
    Set dbs = CurrentDb()
   
    dbs.CreateProperty "Yer", , 2004
    dbs.CreateProperty "Mes", , 1

   
    Set rst = dbs.OpenRecordset("Raschet")
    Do While Not rst.EOF
        '................................................................................
        rst.MoveNext
    Loop
    rst.Close
    dbs.Close
End Sub

Я праильно мыслю?

Это сообщение отредактировал(а) U-Boot - 27.1.2004, 19:12
PM   Вверх
Mephisto
Дата 28.1.2004, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Ну, я это так реализовал:
Код
Dim strSQL$,intYer%,intMes%
Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb()

strSQL="select st.Kod, Month(st.DateOf) as Mes, Year(st.DateOf) as Yer from SampleTable st "
strSQL=strSQL+"Where Month(st.DateOf) = "+cstr(intMes)+" and "
strSQL=strSQL+"Year(st.DateOf) = "+cstr(intYer)

Set rst = dbs.OpenRecordset(strSQL)

Может кто подскажет способ проще?

Это сообщение отредактировал(а) U-Boot - 28.1.2004, 18:45
PM   Вверх
cardinal
Дата 29.1.2004, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Код
Dim strSQL$,intYer%,intMes%
Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb()

strSQL="select st.Kod, Month(st.DateOf) as Mes, Year(st.DateOf) as Yer from SampleTable st " _
           & "Where Month(st.DateOf) = " & intMes & " and Year(st.DateOf) = " & intYer

Set rst = dbs.OpenRecordset(strSQL)

Если только так confused.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Mephisto
Дата 29.1.2004, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Цитата
Если только так

biggrin.gif biggrin.gif biggrin.gif
А если есть Stored Procedure, то как в неё передать Param?

Это сообщение отредактировал(а) U-Boot - 29.1.2004, 15:12
PM   Вверх
Mephisto
  Дата 29.1.2004, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Ответил AntonSaburov
Цитата
Говорят, что есть вариант подстановки параметров, но он только для SQL Server и достаточно тяэело. И только для Access XP. Вообщем мне сказали, что лучше подставлять строки. И это будет наиболее универсально и не замедляет.

PM   Вверх
nicka
Дата 30.1.2004, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



Допустим, это твоя ХП с одним параметром name
Код
ALTER PROCEDURE dbo.proc1
(@name nvarchar(100))
AS
begin
INSERT INTO dbo.table1  (name) VALUES   (@name)
end


Теперь в коде при вызове пишем следующее:
Код

Private cnn As New ADODB.Connection
Private cmm As New ADODB.Command
Dim name As New ADODB.Parameter
    cnn.Provider = "sqloledb"
    cnn.Open "Provider=Microsoft.Access.OLEDB.10.0;User Id=sa;Password=;Data      Source=servername;Initial Catalog=lalala;Data Provider=SQLOLEDB.1"    
    With cmm
       Set name = .CreateParameter("name", adVarWChar, adParamInput, Len(v_name), v_name)
       .Parameters.Append name                
       Set .ActiveConnection = cnn
       .CommandType = adCmdStoredProc
       .CommandText = "proc1"
       .Execute
   End With
   cnn.close

Или я не то что-то говорю??
PM MAIL   Вверх
Mephisto
Дата 30.1.2004, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Да, спасибо именно то.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.