![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() 1.Как удалить форму,которая при запуске появляется первой?И из оставшихся выбрать ту,которая будет появлятся после удаления этой формы?
2. Код:
qtxt:='Select Data,Peni,T.Name '+ ' From Tovari t,Vozvrat v,Klienti k '+ ' Where t.ID_tov=v.ID_tov and k.ID_kl=v.ID_kl and k.ID_kl='''+FormMain.Edit9.Text+''''; With Query5 do begin Sql.Clear; Sql.Add(Qtxt); Open; end; while not Query5.Eof do begin Qtxt:= 'Insert into IstKl(Data,Sum,Deistvie) '+ 'Values ( '''+DateToStr(Query5['Data'])+''','''+IntTostr(Query5['Peni'])+''','''+s3+Query5['Name']+''')'; With Query1 do begin Sql.Clear; Sql.Add(Qtxt); execSQL; end; Query5.Next; end; В строке Query5.Next; выдает ошибку: Код:
General SQL error. [Microsoft][ODBC SQL Server Driver][SQL Server]String or binary data would be truncated. [Microsoft][ODBC SQL Server Driver][SQL Server]The statment has been terminated. Подскажите в чем тут проблема? Если нужно,могу выложить весь код. |
#2
|
||||
|
||||
![]() 1. А нафик вы вообще это так делаете? Все это громадье кода можно засунуть в одну SQL-инструкцию. Примерно так:
Код:
Query5.SQL.Text := 'insert into IstKl (Data,Sum,Deistvie) (select Data,Peni,T.Name from Tovari T inner join Vozvrat V on V.ID_tov=T.ID_tov inner join Klienti K on K.ID_kl=V.ID_kl where K.ID_kl=:ID_kl)'; Query5.Parameters.ParamValue['ID_kl'] := FormMain.Edit9.Text; Query5.ExecSQL; 3. У вас точно поле ID_kl строковое? Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() 1.Пишу курсовую и чтобы потом не было притензий у преподавателя,делаю по его шаблонам.
ID_kl поле int,но это вроде ничего не меняет. Всеже выложу весь юнит: Код:
procedure TFormIstKl.FormActivate(Sender: TObject); var s1,s2,s3:string; begin s1:='Âçÿë òîâàð:'; s2:='Ïîïîëíèë ñ÷åò'; s3:='Óïëàòèë ïåíè çà òîâàð:'; Label1.Caption:=FormMain.Edit2.Text+' '+FormMain.Edit3.Text+' '+FormMain.Edit4.Text+' '; Qtxt:= 'Create table IstKl (Data datetime,Sum numeric,Deistvie varchar(20)) '; With Query1 do begin Sql.Clear; Sql.Add(Qtxt); execSQL; end; qtxt:='Select Data,Stoim,t.Name '+ 'From Tovari t,Vidacha v,Klienti k '+ 'Where t.ID_tov=v.ID_tov and k.ID_kl=v.ID_kl and k.ID_kl='''+FormMain.Edit9.Text+''''; With Query2 do begin Sql.Clear; Sql.Add(Qtxt); Open; end; qtxt:='Select Data,Summa '+ 'From KL_Schet c,Klienti k '+ 'Where k.ID_kl=c.ID_kl and k.ID_kl='''+FormMain.Edit9.Text+''''; With Query3 do begin Sql.Clear; Sql.Add(Qtxt); Open; end; qtxt:='Select Data,Peni,T.Name '+ ' From Tovari t,Vozvrat v,Klienti k '+ ' Where t.ID_tov=v.ID_tov and k.ID_kl=v.ID_kl and k.ID_kl='''+FormMain.Edit9.Text+''''; With Query5 do begin Sql.Clear; Sql.Add(Qtxt); Open; end; while not Query2.Eof do begin Qtxt:= 'Insert into IstKl(Data,Sum,Deistvie) '+ 'Values ( '''+DateToStr(Query2['Data'])+''','''+IntTostr(Query2['Stoim'])+''','''+s1+Query2['Name']+''')'; With Query1 do begin Sql.Clear; Sql.Add(Qtxt); execSQL; end; Query2.Next; end; while not Query3.Eof do begin Qtxt:= 'Insert into IstKl(Data,Sum,Deistvie) '+ 'Values ( '''+DateToStr(Query3['Data'])+''','''+IntTostr(Query3['Summa'])+''','''+s2+''')'; With Query1 do begin Sql.Clear; Sql.Add(Qtxt); execSQL; end; Query3.Next; end; while not Query5.Eof do begin Qtxt:= 'Insert into IstKl(Data,Sum,Deistvie) '+ 'Values ( '''+DateToStr(Query5['Data'])+''','''+IntTostr(Query5['Peni'])+''','''+s3+Query5['Name']+''')'; With Query1 do begin Sql.Clear; Sql.Add(Qtxt); execSQL; end; Query5.Next; end; qtxt:='Select * From IstKl Order by data desc'; With Query4 do begin Sql.Clear; Sql.Add(Qtxt); Open; end; qtxt:='Drop Table IstKl'; With Query1 do begin Sql.Clear; Sql.Add(Qtxt); ExecSQL; end; end; Отсюда видно,что выполняется 2 аналогичных операции и никаких ошибок не выдает,а когда добавил код из первого сообщения,появились проблемы. |
#4
|
|||
|
|||
![]() И еще это "громадье" нужно,чтобы в поле Deistvie записывались данные не толко из базы,а еще и из переменных s1,s2,s3. Я придумал лишь такой способ это осуществить
|
#5
|
||||
|
||||
![]() Цитата:
Цитата:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
![]() вроде работает верно и с кавычками и без
|
#7
|
||||
|
||||
![]() Цитата:
Про формы уточните, что хотите. Если надо показать заставку, а потом ее закрыть и показать главную форму то ( загляните в .dpr - Project-> View Source один из способов: Код:
begin Application.Initialize; Form2 := TForm2.Create(Application);// это форма заставка Form2.Show; Form2.Update; try Application.CreateForm(TForm1, Form1);// первая созданная так форма будет главной // .... finally Form2.Free; end; Application.Run; end. |
#8
|
|||
|
|||
![]() С формами уже разобрался...остается вопрос по БД.Работаю с MS SQL Server 2000
|
#9
|
||||
|
||||
![]() Есть два предположения:
- T.Name может регистрозависимо и надо t.Name ? - Deistvie varchar(20) а s3 уже длиннее 20 символов. Вот и ругается на Query1.Next а так как у тебя все в одну строчку то попадаешь на следующую. Напиши каждый оператор в отдельной строке и попробуй пошагово. И записывать можно по проще: Код:
Query1.Sql.Text := 'Create table IstKl (Data datetime,Sum numeric,Deistvie varchar(20)) '; Query1.execSQL; Query2.Sql.Text := 'Select Data,Stoim,t.Name ' + 'From Tovari t,Vidacha v,Klienti k ' + 'Where t.ID_tov=v.ID_tov and k.ID_kl=v.ID_kl and k.ID_kl=''' + FormMain.Edit9.Text + ''''; Query2.Open; Query3.Sql.Text := 'Select Data,Summa ' + 'From KL_Schet c,Klienti k ' + 'Where k.ID_kl=c.ID_kl and k.ID_kl=''' + FormMain.Edit9.Text + ''''; Query3.Open; Query5.Sql.Text := 'Select Data,Peni,T.Name ' + ' From Tovari t,Vozvrat v,Klienti k ' + ' Where t.ID_tov=v.ID_tov and k.ID_kl=v.ID_kl and k.ID_kl=''' + FormMain.Edit9.Text + ''''; Query5.Open; ........... |
#10
|
|||
|
|||
![]() именно эти 2 ошибки я допустил...спасибо большое,все поправил,работает
|
#11
|
|||
|
|||
![]() Ребята помогите сделать правильный запрос в базу данных
вот стандарт Код:
b := rs.FormatQuery('INSERT INTO '+DBRec.table1+' (BanCreate, HDDSN, Name, IPAddr, BanTime, Reason, SteamId, UUID) '+ 'VALUES (%s,%s,%s,%s,%d,%s,%s,%s)', [SqlDT2Str(p^.DateTime), p^.HddSN, p^.Name, p^.IPAddr, p^.min, p^.Reason, p^.SteamId, p^.UUID]); Код:
b := rs.FormatQuery('INSERT INTO '+DBRec.table1+' (player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reason,ban_created,ban_length,server_name,server_ip, SteamId, UUID) '+ 'VALUES (%s,%s,%s,'''','''',''MyAC'',''S'',%s,%d,%d,''MyAC Anticheat'','''')', [p^.HddSN, p^.IPAddr, p^.Name, p^.Reason, SqlDT2Str(p^.DateTime), p^.min, p^.SteamId, p^.UUID]); Цитата:
PHP код:
PHP код:
http://depositfiles.com/files/wvsx9y6sg |