powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ASP+ADO форматы данных.
13 сообщений из 13, страница 1 из 1
ASP+ADO форматы данных.
    #32061047
Klopiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТАкая проблема. Есть процедура по поиску данных в таблице. Сделана довольно просто

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE  procedure dbo.findcustomers

@Company    nvarchar( 100 ),
@NameID     nvarchar( 20 ),
@Address    nvarchar( 100 ),
@City       nvarchar( 50 )
as
select   CustomerID,
	 NameID,
	 Company,
          Address,
          City,

from customers c

where  c.Company like '%'+@Company+'%'
and     c.NameID 	like '%'+@NameID+'%'
and     c.Address 	like '%'+@Address+'%'
and     c.City	like '%'+@City+'%'


и соответственно asp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
<%dim connect, rs, cmd
dim sid
sid= " " 
dim sCompany, sNameID, sAddress, sCity
sCompany=Request( "Company" )( 1 )
sNameID=Request( "NameID" )( 1 )
sAddress=Request( "Address" )( 1 )
sCity=Request( "City" )( 1 )
set connect=Server.CreateObject( "ADODB.Connection" )
connect.ConnectionTimeout= 15 
connect.CommandTimeout= 10 
connect.Open  "Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=Test;Data Source=SQL\TEST;Use Procedure for Prepare=1 ;Auto Translate=True;Packet Size= 4096 ;Use Encryption for Data=False;Tag with column collation when possible=False"


set cmd=Server.CreateObject( "ADODB.Command" )
cmd.CommandType=adCmdStoredProc
cmd.CommandText= "findcustomers" 
cmd.ActiveConnection=connect

cmd.Parameters.Append cmd.CreateParameter( "Company" ,adVarWChar,adParamInput, 100 ,sCompany)
cmd.Parameters.Append cmd.CreateParameter( "NameID" ,adVarWChar,adParamInput, 100 ,sNameID)
cmd.Parameters.Append cmd.CreateParameter( "Address" ,adVarWChar,adParamInput, 100 ,sAddress)
cmd.Parameters.Append cmd.CreateParameter( "City" ,adVarWChar,adParamInput, 50 ,sCity)

set rs=cmd.Execute

%>


<! -- îñíîâíàÿ òàáëèöà -->
 

<table border= "0 " cellpadding= "4 " cellspacing= "2 " width= "600 ">


<tr>
<td bgcolor= "#e0e0e0"  class= "zagolovok" > 205 ; 238 ; 236 ; 229 ; 240 ;</td>
<td bgcolor= "#e0e0e0"  class= "zagolovok" > 199 ; 224 ; 234 ; 224 ; 231 ; 247 ; 232 ; 234 ;</td>
<td bgcolor= "#e0e0e0"  class= "zagolovok" > 202 ; 238 ; 236 ; 239 ; 224 ; 237 ; 232 ; 255 ;</td>
<td bgcolor= "#e0e0e0"  class= "zagolovok" > 195 ; 238 ; 240 ; 238 ; 228 ;</td>
<td bgcolor= "#e0e0e0"  class= "zagolovok" > 210 ; 229 ; 235 ; 229 ; 244 ; 238 ; 237 ;</td>
<td bgcolor= "#e0e0e0"  class= "zagolovok"  align= "center"  colspan= "2 "></td>
</tr>


<%
while not rs.EOF
sid=rs.Fields( "NameID" ).value
%>


<tr>
<td bgcolor= "#e0e0e0"  class= "tables" ><%=rs.Fields( "CustomerID" ).value%></td>
<td bgcolor= "#e0e0e0"  class= "tables" ><a href= "infocustomers.asp?id=<%=sid%>" ><font size= "-2 "><%=rs.Fields( "NameID" ).value%></font></a></td>
<td bgcolor= "#e0e0e0"  class= "tables" ><%=rs.Fields( "Company" ).value%></td>
<td bgcolor= "#e0e0e0"  class= "tables" ><%=rs.Fields( "City" ).value%></td>
<td bgcolor= "#e0e0e0"  class= "tables" ><%=rs.Fields( "Phone1" ).value%></td>
<td bgcolor= "#e0e0e0"  align= "center" ><a href= "editcustomers.asp?id=<%=sid%>" ><font size= "-2 "> 200 ; 231 ; 236 ; 229 ; 237 ; 232 ; 242 ; 252 ;</font></a></td>
<td bgcolor= "#e0e0e0"  align= "center" ><a href= "deletecustomers.asp?id=<%=sid%>" ><font size= "-2 "> 211 ; 228 ; 224 ; 235 ; 232 ; 242 ; 252 ;</font></a></td>
</tr>


<% 
rs.MoveNext
wend
%>
</table>

<% rs.close
   connect.close %>

Все это работает при переменных формата nvarchar
Но если я начинаю доставлять другие например

@CustomerID smallint
and c.CustomerID like '%'+@CustomerID+'%'
и в asp
cmd.Parameters.Append cmd.CreateParameter("CustomerID",adSmallInt,adParamInput,2,sCustomerID)
начинает ругаться на set rs=cmd.Execute

Error Type:
(0x80040E07)

Чего я неправилбно делаю?
...
Рейтинг: 0 / 0
ASP+ADO форматы данных.
    #32061065
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. like определена только для строк
2. Нельзя складывать строку и число: '%'+@CustomerID+'%'. А Вы как думали?
...
Рейтинг: 0 / 0
ASP+ADO форматы данных.
    #32061083
Klopiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как надо...я начинающий поэтому мало чего знаю.
...
Рейтинг: 0 / 0
ASP+ADO форматы данных.
    #32061100
Klopiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понял что нужно использовать команду convet а куда ее вставлять?
...
Рейтинг: 0 / 0
ASP+ADO форматы данных.
    #32061114
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE  procedure dbo.findcustomers

@Company    nvarchar( 100 ),
@NameID     nvarchar( 20 ),
@Address    nvarchar( 100 ),
@City       nvarchar( 50 ),
 @x int
as
select   CustomerID,
	 NameID,
	 Company,
          Address,
          City,

from customers c

where  c.Company like '%'+@Company+'%'
and     c.NameID 	like '%'+@NameID+'%'
and     c.Address 	like '%'+@Address+'%'
and     c.City	like '%'+@City+'%
and c.x = @x

Разве так не проще? Накой приводить к стоке числа,если поле в таблице числовое то и передавайте число,операции сравнения для чисел никто не отменял,да и работать будет быстрее. Думаеться что c.NameID у вас ,по идее,число,так перепишите ето по людски
......
@NameID nvarchar(20), -> @NameID int,
.......
and c.NameID like '%'+@NameID+'%' - >and c.NameID = @nameID
Да еще set nocount on в начало ХП впишите.
Удачи
...
Рейтинг: 0 / 0
ASP+ADO форматы данных.
    #32061119
Klopiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно...а как быть с форматами данных типа smalldatetime ?
...
Рейтинг: 0 / 0
ASP+ADO форматы данных.
    #32061122
Klopiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да тогода и не совсем так
c.x = @x будет ведь работать тока на сравнение....чисто..
то есть ведь над было чтоб если число заказывалось 85 например то выдавалось не только 85 но и 685 и 856...? То как быть
Вот так?
c.x = *@x*
...
Рейтинг: 0 / 0
ASP+ADO форматы данных.
    #32061134
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просьба обясниться внятнее!
Для дат есть ф-ции сравнения тоже(datepart,datediff......)
А вот с поиском чисел я не понял,что ето за поиск такой,нафиг он нужен,зачем передавать конкретно NameId если вам нужно чтобы вернулось пол таблы.Определитесь что должна возвращать процедура,а то не логично получаеться.Если хооите получить всех продавцов по данной компании,то запрос должен иметь вид где следующий:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select   CustomerID,
	 NameID,
	 Company,
          Address,
          City,

from customers c

where  c.Company like '%'+@Company+'%'

и не зачем передавать для етой задачи столько параметров
...
Рейтинг: 0 / 0
ASP+ADO форматы данных.
    #32061148
Klopiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходима была форма поиска по таблице. по каждому полю.
Могло заполнятся не только одно поле а несколько полей для поиска...
...
Рейтинг: 0 / 0
ASP+ADO форматы данных.
    #32061159
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первое что приходит на ум ,так ето if.....else в Хп поставить и параметры по умолчанию и проверять их , если совпадают,то формировать нужный селект.
...
Рейтинг: 0 / 0
ASP+ADO форматы данных.
    #32061172
Klopiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут же дело состоит не только в прямом совпадении но и частитчном. А параметров на самом деле больше. Их 14 штук, это я тут выложил для простоты мало.

Вот...так вот наверно лучше может CONVERT всетаки использовать.
...
Рейтинг: 0 / 0
ASP+ADO форматы данных.
    #32061180
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну еще по анзванию фирмы,ето еще понятно,по названию города не понятно:)
Разнестите логику поиска на несколко процедур и не мучайтесь. А вот с цыфрами не ясно - если передают 1 то что должно вернуться ,все цыфровые значения где присутствует 1? - не странно? тут диапазон значений нужен в такой ситуации,а не like.
Хорошо подумайте над логикой работы приложения.
...
Рейтинг: 0 / 0
ASP+ADO форматы данных.
    #32061194
Klopiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С числами естесвенно никто вводить один не будет так как саим понятно что выдаст все.
Но есть например есть номер счета в банке по которому что то проплачили из которых часть чисел забыли или например номер фирмы из 4 знаков тока три помнит...а названия не помнит......
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ASP+ADO форматы данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]