QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 12565|回复: 11
打印 上一主题 下一主题

[求助] 关于delphi访问数据库发生了错误 !!!急!!!急!!!急!!!

[复制链接]
字体大小: 正常 放大
penguin        

1

主题

2

听众

23

积分

升级  18.95%

该用户从未签到

网络挑战赛参赛者

新人进步奖

跳转到指定楼层
1#
发表于 2005-5-6 10:09 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
project project2.exe raised exception class eoleexception with message ''在此上下文中不允许使用''c1999001999001999001999001''。此处只允许使用常量、表达式或变量。不允许使用列名。''.process stopped.use step or run to continue.
% W9 `' b8 J( i5 d7 Z     , X, A/ ]- ^, D/ i' }* F
     while not adoqxiaoban.Eof
) I) A: Z6 @3 _$ J2 h  w- T     do2 |3 k3 A9 h! y! f0 }
     begin- }* j2 b' f! i7 {: i
     strxiaoban:=trim(adoqxiaoban.Fields.fieldbyname(''areacode'').AsString );
' ^1 ?! W# A$ q! P% S: y     strcodexia=strlinchang+''999''+stryinglinqu+''999''+strzuoyequ+''999''+strlinban+''999''+strxiaoban;
- [. x0 v5 c) K7 A' F/ @     strcode:=strlinban+strxiaoban;4 F" w- Y/ H* D" y5 S4 L& O' V
     adoqs.SQL.Clear ;4 |. ]( ]$ A' W" ?# d& ~/ U
     adoqs.SQL.Add(''insert into test1 values(''+strcodexiao+'',''+strcode+'')'');
8 D1 L7 b# ]4 n- r, l     adoqs.Prepared ;
( A( j4 W  F: E( g     try
' |2 ]0 W) |$ W4 _5 k     adoqs.Open ;- L: v% w# k# m! I; M
     adoqxiaoban.Next ;+ V; ]6 U' D* M  N; E' ?
     except% I$ x8 A: ^! K$ i
     showmessage(''出错!'');( q+ Y! [9 H0 X
     exit;" Y8 \4 W5 d3 }3 e9 V+ W+ ~% w9 Y
     end;/ H( J' F8 A2 z
     end;
4 X3 P! @# B  X" m  a( I0 M     adoqlinban.Next ;: w: }# O' F6 o3 x" g
     $ Z- ]# C8 h$ A9 G1 Z3 F
     这是其中的一段代码 好像出错的就是在这 在adoxiaoban.next那 哪位大虾帮帮忙 很急了
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
ilikenba 实名认证       

1万

主题

49

听众

2万

积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    <>我估计是这句的问题adoqs.Open ;3 e+ l# b: O, D( G0 g3 @, P
    你先检查一下SQL语句对不对,我这里好多变量不知道,没有办法帮你调试!</P>
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    <>好的 我给你全部的代码吧</P><>unit Unit1;</P><>interface</P><>uses
      l% n. W) `2 f; @4 Y  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,: i# r& ^# r- b# P; |6 s
      Dialogs, StdCtrls, DB, ADODB;</P><>type
    ( {  w. D2 e) e* _; r( b) l4 T. J  TForm1 = class(TForm)4 ~1 J: L& G6 K) _: c
        Edit1: TEdit;0 t' E$ z; `7 m6 m" Z' L. A$ i
        Button1: TButton;- X. @% T% n- a0 w
        ADOConnection1: TADOConnection;
    2 x0 `. R, r1 B    ADOQlinchang: TADOQuery;7 _( X1 T' `- Y- S
        ADOQyinglinqu: TADOQuery;
    $ U/ A+ h- X1 h4 x1 m) J& d$ h    ADOQzuoyequ: TADOQuery;! `( H3 T( Q, v2 I# }
        ADOQlinban: TADOQuery;2 `1 D: {) S0 m
        ADOQxiaoban: TADOQuery;
    ) ~+ R' ]$ e! G7 `* G  w' R    ADOQs: TADOQuery;; [* b8 M* R8 d  X
        procedure Button1Click(Sender: TObject);
    + g9 G. `# R) U: n) H  private
    ' Z1 a# c& v2 u# S) I* S; y    { Private declarations }
    " Y1 b" W  {9 S8 d/ P  public
    : @5 L0 B% c; \' p$ C6 \' a    { Public declarations }
    5 M2 c0 D# T0 {; q/ e  end;</P><>var
    + f+ Z- }2 Q  }- A. v6 ^! I4 c  Form1: TForm1;</P><>implementation</P><>{$R *.dfm}</P><>procedure TForm1.Button1Click(Sender: TObject);
    4 W, `& {# n" ?  |! t* H% U* T0 ]var8 n- t9 r, c# m
    strlinchang,stryinglinqu,strzuoyequ,strlinban,strxiaoban,strcodezuo,strcodeying,strcodelin,strcodexiao,strcode:string;- D4 F; C2 [9 C- J
    begin' _; V+ Z# [  ]
    adoqlinchang.Close ;3 U- S1 H) t+ I8 g
    adoqyinglinqu.Close ;$ L5 r- n. Q' ?2 y) b- ~, q( K
    adoqzuoyequ.Close ;
    + S% c  R0 a! z5 P- gadoqlinban.Close ;
      q1 ?" `* N* z: B8 M- H6 h* Tadoqxiaoban.Close ;
    ) m3 |) p9 ^  S" @; Z" dadoqs.Close ;
      _. ^8 `" w: S3 y2 c4 p9 d$ Kadoqlinchang.SQL.Clear ;' {! R& u: M! u7 l, W. g* b* o
    adoqlinchang.SQL.Add('select areacode from tfsareacode where areaname=:linc');
    ) I; g$ u9 I8 b4 b: F. padoqlinchang.Parameters.ParamByName('linc').Value :=edit1.Text ;
    + D) h- c& ?: k: P3 Y# z3 Dadoqlinchang.Prepared ;
    0 ]! k3 O( \4 K# cadoqlinchang.Open ;
    0 l9 I' Y0 B- {5 g* T( ]% astrlinchang:=trim(adoqlinchang.Fields.fieldbyname('areacode').AsString );" o1 z1 j! x8 {, {' U
    adoqyinglinqu.SQL.Clear ;  n7 }' k5 z  ~2 G1 Z
    adoqyinglinqu.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:linc');
    5 {% n2 H! F6 a% I4 Iadoqyinglinqu.Parameters.ParamByName('linc').Value :=edit1.Text ;
      L0 @6 ?: w+ o) X- [% @/ L% `adoqyinglinqu.Prepared ;. I8 B2 L# K7 e: C4 K/ A0 Q
    adoqyinglinqu.Open ;+ p/ [# B4 ]( v# f" q5 X
    while not adoqyinglinqu.Eof* L* S3 N( [& T; B
    do8 z/ i/ n+ E" ~
    begin
    * O; u" Q3 n% G  M  stryinglinqu:=trim(adoqyinglinqu.Fields.fieldbyname('areacode').AsString );
    + @2 `. ^5 g; J: S* D  strcodeying:=strlinchang+'999'+stryinglinqu;! e4 o0 O4 J( D( ~: u* P$ _( U
      ADOQZuoYeQu.SQL.Clear;7 l: ]- L' @, w
      ADOQZuoYeQu.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:yinglq');$ \! R7 n) g# i0 l* m, F" R
      ADOQZuoYeQu.Parameters.ParamByName('yinglq').Value:=ADOQYingLinQu.Fields.fieldbyname('areaname').Value ;
    - b4 ?  u7 l4 Z8 U# n  ADOQZuoYeQu.Prepared;
    , J' s- J) O8 B+ T  n  ADOQZuoYeQu.Open ;9 w+ l: ^1 u! O" Q
      while not adoqzuoyequ.Eof
    . b/ W% [: d" W8 _% n: p4 q  do. i$ y) [6 F# {( e) m5 }3 R
      begin% a+ M# \/ e0 w  _% B, v
        strZuoyequ:=ADOQZuoYeQu.Fields.fieldbyname('areacode').AsString ;       <a>file://逐</A>个作业区的代码
    ; z" ~9 L7 Z( B8 l    strcodezu=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ;  N- h8 ]& ^7 o+ ^
        ADOQLinBan.SQL.Clear;
    , o! O, e9 }2 n8 S  w    ADOQLinBan.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:Zuoyq');5 G+ P  v, R0 H1 R' s9 o4 V! k
        ADOQLinBan.Parameters.ParamByName('Zuoyq').Value :=ADOQZuoYeQu.Fields.fieldbyname('areaname').Value ;
    + n2 H. _! X. I' L: L    ADOQLinBan.Prepared;- y! N6 `  N5 R% L( N
        ADOQlinBan.Open;
    $ ^* V7 ~) v4 i( X# \    while not adoqlinban.Eof
    8 h+ u. \' q  o# M7 Y5 A: C+ E# Y7 L    do6 Y; Q9 s& G  y, N
        begin# `6 Y( {* u$ Z" b- p
          strlinban:=trim(adoqlinban.Fields.fieldbyname('areacode').AsString );
    . @- Y  z( S! X! E* T" E      strcodelin:=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ+'999'+strlinban;
    0 b1 `' z/ |# t" o* x( C      adoqxiaoban.SQL.Clear ;
    ) j$ {' y- G/ c% Q' B; {      adoqxiaoban.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:linb');
    # r% H/ A2 ^) {( Q      adoqxiaoban.Parameters.ParamByName('linb').Value :=adoqlinban.Fields.fieldbyname('areaname').Value ;
    # P3 W+ p' c$ [      adoqxiaoban.Prepared ;
    $ s0 a! S- B5 Q% w7 j! f9 ?      adoqxiaoban.Open ;
    * u1 R' t  d: B  H& k- _7 o( M5 a        while not adoqxiaoban.Eof4 ~& h, h' p9 C/ e; q: w
            do* x2 J: {) g8 q) f( S: T4 R) ~
            begin* m. ?6 W" M, x; R: E6 o/ f
              strxiaoban:=trim(adoqxiaoban.Fields.fieldbyname('areacode').AsString );$ O  T7 f. j* W
              strcodexia=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ+'999'+strlinban+'999'+strxiaoban;; j5 H- ~) ^3 j# V; W! }
              strcode:=strlinban+strxiaoban;
    ; G8 L% A. \* r4 {9 Y% t/ Q          adoqs.SQL.Clear ;( p: f6 I, g/ ]5 E5 Q# I
              adoqs.SQL.Add('insert into test1 values('+strcodexiao+','+strcode+')');6 f5 X- x. U9 s; [
              adoqs.Prepared ;, B1 |4 q! q; C( h$ T/ r, \& d+ o$ ]
              try  B" y- X. ~3 I$ o
              adoqs.Open ;
    : e& m% f! ?- }+ E3 r          adoqxiaoban.Next ;
    ' Z9 I5 O4 F" P          except
    4 e- H" p; o8 D, D          showmessage('出错!');  n. w! u0 E8 w
              exit;* V- U( c. J' i" l) ~& o! m
              end;2 \, g/ B: g0 @8 E9 S
            end;! [+ N* F- [5 M2 ?
            adoqlinban.Next ;4 N1 x8 j8 a* \  T6 \% O! e
        end;! L! s( y, t: p4 T+ w' e7 @0 b2 c& b
        adoqzuoyequ.Next;
    8 ~# v& y+ K6 c8 |) g8 i! E& G  ]  end;8 @% b" I2 ]$ J; k
        adoqyinglinqu.Next ;' e7 f1 e6 p" Q
    end;, Z' n& v  |9 |% Q! z- j
      adoqlinchang.Close ;& D+ Z8 Z. V, ^! D; {; `0 O% b
      adoqyinglinqu.Close ;
    7 a, ~! p' K  e' W5 B  adoqzuoyequ.Close ;
    " l7 m/ {: v6 w  adoqlinban.Close ;
    & d9 z8 B2 X8 }: l( W, b9 e  adoqxiaoban.Close ;
    4 W! K6 @( v6 B4 N2 r" j  adoqs.Close ;
    ' J1 E, }& q8 l6 T6 L) Mend;</P><>end.</P>
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    你的程序我读起来不太明白,没有数据库我也调试不了,但是从错误看应该是SQL语句的问题,你应该跟踪一下,看看每个生成的SQL语句是不是正确!
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    怎么跟踪亚 因为我的delphi没学多久 [em04] 我开始也以为是sql语句错 但试了下好像没什么问题
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    <>而且 每次用delphi向sql server里插入字符串时 如 001 到了数据库里面都是 1 </P><>数据库里的数据类型是char型的 </P>
    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    你确认存入数据库的语句没有问题吗?001变成了1应该当作整型处理的原因,我一般喜欢用varchar的类型!
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    <>那是个实现从数据库中提取各级单位的编码 然后再编成最底一级的单位的编码 以表示它们间的上下级的关系 很简单的 </P><>这个很急 搞了一个5.1  都没弄出来 下面的工作都没法做了 拜托拜托了</P><>至于 001 变为 1的 程序在下面</P><>procedure TForm1.Button1Click(Sender: TObject);
    0 r5 ]* `5 d% j& ]; b3 T; ~  \+ Mvar9 s) g- x1 e; s: ^' |$ V! q
      str1,str2:string;  v! J$ s  s2 y/ \
    begin
    1 Y. t- {! V$ Y! F% ^4 |# n% wstr1:='001';
      l) T6 r/ S' A$ e& vstr2:='002';
    8 q2 G& W6 a  D& {) X8 fadoquery1.Close ;
    * @& j( E- g* a" Iadoquery1.SQL.Clear ;
    ; F+ x+ s- _5 R  _( R# Xadoquery1.SQL.Add('insert into test1 values('+str1+','+str2+')');& n% O9 R2 m. k" f. x
    adoquery1.Prepared ;8 z4 ^) Z  {# J3 y
    adoquery1.ExecSQL ;5 d& ~4 y8 r7 c- N
    end;</P><>我觉得我的程序没有错呀 </P><>还有 varchar 和 char 有什么区别亚</P><>万分感谢!!! </P>[em07][em01][em01][em01]
    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    <>晕,你的SQL语句写的不对!字符串数据添加是两边要有',否则就按数字处理了!</P><>adoquery1.SQL.Add('insert into test1 values('''+str1+''','''+str2+''')');</P><>这句改成上面的就对了!</P>
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-8-17 03:23 , Processed in 0.663929 second(s), 98 queries .

    回顶部