안녕하세요 김정식 입니다.
asp로 informix text필드에 자료 입력 하는 방법을 드뎌드뎌...완성하였습니다.
물론 insert, update, select도 완벽히 됩니다.
제가 만든 것은 계층형 게시판으로서 잘 작동합니다.
그럼 방법을 알려드리겠습니다.
command 객체를 이용하지 않았습니다.
이방법은 너무 어렵더군요..ㅡㅡ;;
그리고 게시판에 적용하기도 넘 난해했구요..
어쨋든 밑에서 나온 방법이긴 하지만, 어째 좀 허술(?)한거 같아,
정리를 해보겠습니다.
Set jsDb=Server.CreateObject("Adodb.Connection")
jsDb.Open Session("ConnectionString")
*****************************************
Session("ConnectionString") = "DSN=????;UID=????;PWD=???"
은 global.asa에서 정의해 주었습니다. ??? 표가 무엇인지는 다 아시죵? ^^;
*****************************************
set jsRs=server.CreateObject("Adodb.Recordset")
jsRs.CursorLocation = 3
jsRs.Open Session("tbl_code"),jsDb,2,3,2
****************************************
session("tbl_code")은 테이블 이름입니다. 단순히 테이블 이름만!
저같은 경우는 멀티 게시판이므로 테이블 이름을 세션으로 처리하였습니다.
****************************************
jsRs.AddNew
jsRs.Fields("num")=num
jsRs.Fields("id")=id
jsRs.Fields("name")=name
jsRs.Fields("password")=password
jsRs.Fields("email")=email
jsRs.Fields("homepage")=homepage
jsRs.Fields("writedate")=writedate
jsRs.Fields("address")=address
jsRs.Fields("readcount")=readcount
jsRs.Fields("title")=title
jsRs.Fields("content")=content
jsRs.Fields("filename")=UploadFile
jsRs.Fields("filecount")=filecount
jsRs.Fields("filesize")=filesize
jsRs.Fields("ef_ref")=ef_ref
jsRs.Fields("step")=restep
jsRs.Fields("relevel")=relevel
jsRs.Fields("tag")=tag
*************************************
왼쪽값들은 테이블 필드 이름과 같아야 합니다.
오른쪽값들은 form 으로 부터 받은 값들 입니다.
예) title=request.form("title")
*************************************
jsRs.Update
jsRs.Close
Set jsRs=nothing
*************************************
바로 여기까지 입니다.
그러면 insert가 아주 잘 됩니다.
물론 저는 informix에서 제공되는 serial 필드도 있습니다.
하지만 이필드는 자동으로 1씩 증가되므로
그냥 나두어도 상관이 없습니다.
serial 없이 그냥 num을 primary키로 쓸려고 하니
계층형 게시판이라 그런지 mssql에서는 안나던 에러가 나더군요
프라이 머리 키값이 필요하다는둥.....하는 에러가...
그래서 serial 필드를 하나 맹글어 줘버렸습니다.
아무짝에도 쓸모가 없는 것인데..에러땜에..
여기서 update를 하실려면 단 두줄만 수정해주시면 됩니다.
insert에서는 단순히 session("tbl_name")해서 테이블 이름만 정해주면 되지만,
update은 update할 자료를 일단 레코드셋으로 만들어 줘야 합니다.
그러므로 위 소스중에서
Sql="Select * from " & session("tbl_code") & " where num=" & num & "
and step=" & restep & " and relevel=" & relevel
이런식으로 sql변수를 하나 만들어 주고
sessin("tbl_name")대신에 Sql 변수를 대신 써주시면 됩니다.
그러면 소스가 다음 처럼 되겠죠?
jsRs.Open Sql,jsDb,2,3,2
하지만 이렇게 하시면 안됩니다.
2,3,2 를 1,2로 해주셔야 합니다.
jsRs.open Sql,jsDb,1,2
이런식으로요.
그려면 현재 자료에 덮어쓰기 자알 됩니다.
******************그리고 제일 중요한 것은
clientsdk 벼젼중 2.60 버젼은 버그가 있습니다.
바로 text필드의 값들이 select가 안됩니다.
insert는 잘 되는것 같습니다만...쩝..ㅡㅡ;
그래서 몇날밤을 새다가 결국은
informix.com/kr에 메일을 보내서 알아낸겁니다.
clientsdk 벼전을 2.30 이나 2.40버젼으로 다운 그레이드를 해보라고 하더군요
그래서 저는 2.30버젼을 다시 설치했습니다.
그런데 자꾸 덤프가 나더군요.(그래서 안전모드로 부팅해서 설치했습니다.)
그리고 odbc 설정을 다시 해주었구요..
하하하.
이제 잘 됩니다.
넘 넘 기뿝니다.
원래는 mssql버젼용을 제작했었는데,
급히 informix용으로 포팅해야 하는 피치못할 사정이 생겨서..
몇날 며칠밤을 샜는지 모르겠습니다.
(중간고사 학고 나오게 생겼습니다..흑흑..)
아주 사소한것지만 정확한 정보를 찾아보기가 힘들더군요.
두서없이 썼는데 여기까지 읽어주셔서 감사합니다.
혹시라도 질문이 있으신분은 이곳 게시판이나
요밑에 있는 시험용 게시판에 글 남겨 주시면
제가 아는데까지는 알려드리겠습니다.근데 지금 중간고사 기간이라..
ㅡㅡ;; 그래도...열심히...^^;;
이상 zunbtang 이었습니다.~~~~
p.s 제가 지금 시험운영중인 게시판이 있습니다.
물론 스터디 목적으로 임시로 만든 게시판 입니다.
테스트성 글은 쓰고 지워 주시기 바랍니다.
또한 mssql과 informix용으로 둘다 쓸수 있도록,
정리를 잘한다음에 소스를 오픈할 예정입니다.
그때 이곳에도 올릴께요
<a href=http://www.inter4u.org/java target=new_top>시험용 informix게시판</a>
|