Q & A

시삽: 레드플러스 님 
게시판 이동:
 제목 : 검색 부분 작업중 에러-
글번호: 517
작성자: 박은미
작성일: 2007/04/14 오전 1:45:00 (2007/04/14 오전 1:51:00 수정)
조회수: 3208
지난번의 에러를 고치던중 IDatareader 형으로 선언땜에 페이징이 안된다고 하는 것인지 의심스러워서 IDataReader형을 DataSet 으로 바꿨읍니다. 그런데 이번에는 Query 값인 데이터의 Varchar값을 int 형으로 변환할 수 없다고 계속 나오네요.. string 값을 어째서 int 형으로 바꿔야 하는지 잘 모르겠네요... 넘겨준 값은 searchfield="name"이고 searchquery="시험자" 로 잘 넘어간것 같은데.. 시험자 값을 int로 변환하지 못했다고 나오네요.. sqlDataProvider값에서의 설정은 이렇습니다.
public override DataSet SearchTestRegisters(string searchField, string searchQuery)
{
string strSql = "SearchTestRegisters";
SqlConnection objCon = new SqlConnection(ConnectionString);
objCon.Open();
SqlCommand objCmd = new SqlCommand(strSql, objCon);
objCmd.CommandType = CommandType.StoredProcedure;
objCmd.Parameters.Add("@SearchField", SqlDbType.VarChar, 255);
objCmd.Parameters.Add("@SearchQuery", SqlDbType.VarChar, 255);
objCmd.Parameters["@SearchField"].Value = searchField;
objCmd.Parameters["@SearchQuery"].Value = searchQuery;
SqlDataAdapter objDa = new SqlDataAdapter(objCmd);
DataSet objDs = new DataSet();
objDa.Fill(objDs, "TestRegisters");
return objDs;
}
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트
  violeter33
  2007-04-14 오전 11:55:35
테이블의 데이타 형식과 파라미터의 데이타 형식이 다른게 아닐까요??
프로시져하고 테이블까지 볼수 있으면 더 확실할꺼 같은데요..
데이타 형식이 맞는지 확인하시고..
다르면 Convert 나 Casting 을..
해보심이 어떨지요..
  choiyw2
  2007-04-14 오후 10:34:35
성춘형땜에 비밀번호를 바꿔야겠다는..... ㅡㅡ^

프로시져를 보여주시면 확실히 알거같은데요

임의로 프로시져만 사용해서 값 입력해보세요``

테스트를 해보면 정확히 알겠죠 ^^
  mia
  2007-04-15 오전 1:16:03
Create table TestRegisters
(
    RegisterID int identity(1,1) not null Primary Key,     --회원번호
    
    [Name] varchar(50) not null,                             --학생이름
    
    SchoolName varchar(50) not null,                       --학교명
    Grade int not null,                                        --학년
    Email varchar(50) null,                               --이메일
    Phone1 varchar(4)  null,                                    --전화번호1
    Phone2 varchar(4)  null,                                    --전화번호2
    Phone3 varchar(4) null,                                    --전화번호3
    Mobile1 varchar(4) null,                                    --핸드폰번호1
    Mobile2 varchar(4) null,                                   --핸드폰번호2
    Mobile3 varchar(4) null,                                   --핸드폰번호3
    Gender int check(Gender in(1,2)),        -- 0 : 남자, 1 : 여자
    
    
    Zip varchar(7) null,            -- 우편번호,
    Address varchar(100)  null,         -- 주소
    AddressDetail varchar(100)  null,   --상세주소
    InfoPath int null,                --학원정보를 어떻게 알았는지..
    Note varchar(300)null,                  --메모
    
    ApplicationDate smalldatetime default getdate()   --등록일
)
go
  mia
  2007-04-15 오전 1:16:55


프로시저
--create proc SearchTestRegisters
--    @SearchField varchar(255),
--    @SearchQuery varchar(255)
--as
--    set @SearchQuery = '%' + @SearchQuery + '%'

--    select * from TestRegisters
--    where
--    (
--        case @SearchField
--        when 'Name' then Name        
--        when 'SchoolName' then SchoolName
--        when 'Grade' Then Grade
--        else @SearchQuery
--        end
--    )
--    like @SearchQuery
--go
  choiyw2
  2007-04-15 오전 3:19:10
두가지 방법이 있어요

테이블에서 Grade를 char 또는 varchar로 바꿔주시거나.

프로시져에서 When 'Grade' then Grade를
When 'Grade' then Convert(varchar,Grade) 로 바꿔주시거나

저 같으면 테이블형식을 바꾸겠어요 -0-
학년이라는 필드가 꼭 int형이 필요한게 아니잖아요

인라인으로 작성한게 아니기때문에..
값이 넘어올때 int랑 string을 자동으로 바꿔주지못해서 나는 에러같네용
인라인으로 한다면야 조건 하나 추가하면되겠지만..ㅋㅋ

cs구문에서 parameter에서 값이 넘어올때 varchar이기 때문에 Grade에서
걸려서 나는 에러네용
  mia
  2007-04-15 오후 8:33:21
감솨~~ 해결  ^   ^
  Administrator
  2007-04-16 오후 10:51:45
멋져...

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 선생님 질문이요~~ (4) - 최성춘 2007-04-16 3149
현재글 검색 부분 작업중 에러-(7) - 박은미 2007-04-14 3208
다음글 클래스를 순서도에서 (2) - 조혜경 2007-04-13 4011
 
손님 사용자 Anonymous (손님)
로그인 Home