回 帖 发 新 帖 刷新版面

主题:关于字符串连接的那个引号,我郁闷死了!

到图书管看了好多DELPHI的书就是找不到关于引号的使用!
大家帮我看看。谢谢了!

我在做一个订票系统
----------------------------------------------------
这是"编辑资料按钮"代码:
----------------------------------------------------
procedure TFrmBookTicket.ModSBClick(Sender: TObject);
var
    SQLStr:string;
begin
    SQLStr:='UPDATE tbBookTicket SET'
        +'TKind='''+KindCbB.Text+''','
        +'TDate='''+TDateEdit1.Text+''','
        +'Foregift='+ForeCbB.Text+','
        +'DesTown='''+DesCbB.Text+''','
        +'BDate='''+BDateEdit2.Text+''','
        +'Note='''+NoteCbB.Text+''' where
          GuestName='''+NameCbB.Text+'''';
    with DataModule1.Query1 do
    begin
        Close;
        SQL.Clear;
        SQL.Add(SQLStr);
        ExecSQL;
    end;
    SelectAll;
    ModGB.Visible:=false;
end;
----------------------------------------------------
----------------------------------------------------
这个是添加按钮代码
----------------------------------------------------
procedure TFrmBookTicket.OkSBClick(Sender: TObject);
var
    SQLStr:string;
begin
    SQLStr:='Insert into tbBookTicket Value ('+Trim(IDCB.Text)+','''
        +NameCB.Text+''','''+KindCB.Text+''','''+TDateEdit.Text+''','''
        +BDateEdit.Text''','''+ForeEdit.Text+''','''+DesCB.Text+''','''
        +NoteCB.Text+''')';
    with DataModule1.Query1 do
    begin
        Close;
        SQL.Clear;
        SQL.Add(SQLStr);
        ExecSQL;
    end;
    SelectAll;
    AddGB.Visible:=false;
end;
----------------------------------------------------
错误提示
----------------------------------------------------
[Error] U_MainForm.pas(162): Unterminated string
[Error] U_MainForm.pas(163): Missing operator or semicolon
[Error] U_MainForm.pas(164): Missing operator or semicolon
[Error] U_MainForm.pas(181): Missing operator or semicolon
[Error] U_MainForm.pas(181): Missing operator or semicolon
[Error] U_MainForm.pas(182): Statement expected, but expression of type 'TCaption' found
[Fatal Error] BookTicket.dpr(8): Could not compile used unit 'U_MainForm.pas'

回复列表 (共7个回复)

沙发

'+Trim(IDCB.Text)+'错了

板凳

好象没错啊,怎么改啊?
有关于单引号怎么使用的教程吗?我想看下!

3 楼

自己顶下

4 楼

sql语句写的这么麻烦,看的头就晕,干吗不用参数!比如
      ADOComm.CommandText:='insert into MovieInfo (MovieName,Movietype,RegDate) values (:strMovieName,:strMovieType,:strRegDate)';
      ADOComm.Parameters.ParamByName('strMovieName').Value:='星球大战';
      ADOComm.Parameters.ParamByName('strMovieType').Value:='科幻片';
      ADOComm.Parameters.ParamByName('strRegDate').Value:=Date;

5 楼

在SQL中参数引用时的控件属性或变量的引用'''+edit.text+''''  单纯的字符串为''string'' 但是showmesssage(edit.text)中无引号.

6 楼

在SQL进行参数参数传递时 控件属性或变量的引用为'''+edit.text+'''' ,单纯的字符串为''string'' 。但是若不在sql中时,如:showmesssage(edit.text)中无引号. 

7 楼

function Add_semicolon(const Text: string): string;
var
  i, l_Length: Integer;
  Tmp_Str: string;
begin
  l_Length := Length(Text);
  for i := 1 to l_Length do
  begin
    if Copy(Text, i, 1) = '''' then
      Tmp_Str := Tmp_Str + ''''''
    else
      Tmp_Str := Tmp_Str + Copy(Text, i, 1);
  end;
  Result := Tmp_Str;
end; 
用这个函数可以解决

我来回复

您尚未登录,请登录后再回复。点此登录或注册