線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:907
推到 Plurk!
推到 Facebook!

如何更改指点位置的资料

答題得分者是:cashxin2002
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-29 07:18:26 IP:222.184.xxx.xxx 未訂閱
如图: 我要做的是修改密码功能,就是从用户表中查到EDIT1中的用户名,然后将他的密码改为EIDT2中的内容就行了。我不知道是不是用SQL语句,是的话具体如何用?我这么用好象是错误的:
begin
                ADOQUERY1.Close;
                ADOQUERY1.SQL.Clear;
                ADOQUERY1.SQL.Add('update tb_user set pass=:pass where user=:user' );
                ADOQUERY1.Parameters.ParamByName('pass').Value :=edit2.text;
                ADOQUERY1.Parameters.ParamByName('user').Value :=edit1.text;
                end;
 
------
我的编程起步于ktop,我将永远支持ktop
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-29 08:11:37 IP:218.15.xxx.xxx 未訂閱
您好:仅仅按您的意思:就是从用户表中查到EDIT1中的用户名,然后将他的密码改为EIDT2中的内容就行了;您的写法上没什么错误,只是少了一句  
      begin 
        ADOQUERY1.Close;
        ADOQUERY1.SQL.Clear;
        ADOQUERY1.SQL.Add('update tb_user set pass=:pass where user=:user' );
        ADOQUERY1.Parameters.ParamByName('pass').Value :=edit2.text;
        ADOQUERY1.Parameters.ParamByName('user').Value :=edit1.text;
   ADOQuery1.ExecSQL;//加上此句即可
      end;     
============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-29 12:07:38 IP:222.184.xxx.xxx 未訂閱
引言: 您好:仅仅按您的意思:就是从用户表中查到EDIT1中的用户名,然后将他的密码改为EIDT2中的内容就行了;您的写法上没什么错误,只是少了一句
      begin 
        ADOQUERY1.Close;
        ADOQUERY1.SQL.Clear;
        ADOQUERY1.SQL.Add('update tb_user set pass=:pass where user=:user' );
        ADOQUERY1.Parameters.ParamByName('pass').Value :=edit2.text;
        ADOQUERY1.Parameters.ParamByName('user').Value :=edit1.text;
   ADOQuery1.ExecSQL;//加上此句即可
      end;     
============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
deity前辈,经过您的指点加强了我的信心,我就不在代码本身上找错误了,一开始代码运行正常,但内容就是不改。后来我试着在首尾处加了两句,ADOTABLE1.CLOSE,ADOTABLE1.OPEN,然后就成功了。虽然成功了,我还有两个问题请教前辈一下: 1.ADOQuery1.ExecSQL与ADOQuery1.OPEN,有什么区别之处? 2.是不是有ADOTABLE连接到要改的数据表时SQL就是无法改动的,我这样做对不对?
------
我的编程起步于ktop,我将永远支持ktop
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-29 12:27:22 IP:202.62.xxx.xxx 未訂閱
您好﹗    您在完成SQL更新后﹐使用ADOTable1的Close和Open方法﹐其作用會使ADOTable1元件取得最新狀態的后端資料表內容﹒    1. ADOQuery的Open方法﹕适用于有資料回傳的SQL語法﹐即當語法下達后﹐后端資料庫會有相符的資料回傳到前端的ADOQuery1﹐如Select語法 ADOQuery的ExecSQL方法﹕适用于無資料回傳的語法﹐即當語法下達后﹐后端資料庫只對相符的資料做對應的處理動作﹐而不會將結果回傳到前端的ADOQuery1﹐如Delete, Insert, Update等語法﹒    2. 不會﹐不同的資料集元件具有各自不同的使用方法﹐同上述的﹐如果要取得最新的后端資料庫內容﹐在完成異動之后﹐最直接的方法就是將資料集元件Close再Open﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-29 16:32:37 IP:218.15.xxx.xxx 未訂閱
补充, ntjrr您好: 1、摘自电子报中的文章: Open 和 ExecSQL 的差異? Open :  當你的 SQL 指令是會另數據庫回傳資料時使用,最常用的是 Select, 但也包括 Show Tables, Show Create Table 等等,你使用 Open (或設 Active := true) DataSet 元件會期望有 Cursor 回傳,即是回傳的是空資料也好;但若沒 Cursor 回傳即會出錯。    ExecSQL : 當你的 SQL 指令只是叫數據庫執行一些東西而沒有 Cursor 回傳的 (可回傳 Row Affected / warning 等資訊)。DataSet 不會預備資源給回傳的 Cursor 所以若有 Cursor 回傳也處理不了。這主要是 Insert、Update、Delete 但也包括呼叫數據庫做不同事的函數。    其实您下Update,资料表数据已经有所改变,您可直接打开资料库去看,不过因为没回传值,所以得重新open才能看得到所改变的值。 2、不会,原因cashxin2002兄也有说明,小弟就不重复了~    有信心做事,就会事半功倍~ <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-30 09:29:16 IP:222.184.xxx.xxx 未訂閱
我所讲的是ADOTable close 是在sql执行前执行,ADOTALBE open是在adoquery.execsql后执行,代码如下:
       // ADOTable1.close;
                ADOQUERY1.Close;
                ADOQUERY1.SQL.Clear;
                ADOQUERY1.SQL.Add('update tb_user set pass=:pass where user=:user' );
                ADOQUERY1.Parameters.ParamByName('pass').Value :=edit2.text;
                ADOQUERY1.Parameters.ParamByName('user').Value :=edit1.text;
                ADOQUery1.ExecSQL;
                ADOTable1.Open; 
如果第一行中加上//后,代码运行无错误,但密码就是没改动过来。如果去掉//,执行adotalbe1.close后,密码就能改过来了!不知道原因何在。 注:因为设计时ADOTable是关闭的,所以我在onshow事件中打开了adotable,在onclose事件中关闭了它。 發表人 - ntjrr 於 2005/07/30 09:33:41
------
我的编程起步于ktop,我将永远支持ktop
系統時間:2024-06-01 23:01:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!