Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.08.2009, 00:39
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию Стек переполнен?

Теперь другая прроблема появилась ...
в общем у меня все происходит так ..пользователь подключился,зарегистрировался или авторизовался,занес свой ник в список онлайн пользователей,хочет обновить о себе инфу включая и ник ..
Значит что происходит :1)Удаляем сначала из списка пользователей его старый ник ; 2)Обновляем данные и заносим в бд ; 3)Добавляем новый ник в список пользователей ,и рассылаем этот список клиентам.
вот собстно код :
Код:
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
tmp_query: string;
i:integer;
begin
//УДАЛЕНИЕ СТАРОГО НИКА!!!
adoquery4.sql.Add('SELECT nick FROM table1 ');
adoquery4.sql.Add(' WHERE login='+quotedStr(Edit2.Text));
adoquery4.sql.Add(' and pass='+quotedstr(edit4.text));
ADOQuery4.open;
edit3.Text:=inttostr(ADOQuery4.RecordCount);
if ADOQuery4.RecordCount <> 0 then
 begin
  s:=ADOQuery4.Fields.Fields[0].AsString;
  listbox1.Items.delete(listbox1.Items.IndexOf(s));
  end ;

//ОБНОВЛЕНИЕ ДАННЫХ
ADOQUery1.Active:=false;
DAtaSource1.Enabled:=false;
tmp_query:=ADOQUERY1.SQL.Text;
adoquery1.sql.text:='UPDATE table1 SET'#13#10+
                            ' id = ' + QuotedStr(Edit1.Text) + ','#13#10 +
                            'info = '+ QuotedStr(Edit7.Text) + ','#13#10 +
                            ' ip = ' + QuotedStr(Edit5.Text) + ','#13#10 +
                            ' nick = ' + QuotedStr(Edit6.Text) +   #13#10 +
                            'WHERE login ='+QuotedStr(Edit2.Text)+ #13#10 +
                            'AND pass = ' +QuotedStr(Edit4.text);
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Text :=tmp_query;
ADOQUery1.Active:=true;
Datasource1.Enabled:=true;
//СОСТАВЛЕНИЕ НОВОГО СПИСКА ЮЗЕРОВ
{Добавляем его в юзер лист}
   ListBox1.Items.Add(Edit6.Text);
   {Записываем в s команду для посылки нового списка юзеров}
   s := '#U';
   for i := 0 to ListBox1.Items.Count-1 do
    s := s+ListBox1.Items[i]+';';
   {...и рассылаем этот список всем клиентам}
   for i := 0 to Ss1.Socket.ActiveConnections-1 do
    Ss1.Socket.Connections[i].SendText(s);
   Exit;

end;
А теперь собственно о проблеме .
Первый раз все прекрасно обновляется..но когда я хочу обновить во второй раз данные о себе то получаю еррор Stack overloff .
Что мне делать?
Ответить с цитированием
  #2  
Старый 27.08.2009, 01:05
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

А у вас значение adoquery4.sql.text при втором вызове Button3Click чему равно?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 27.08.2009, 21:00
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию

ээ то есть это значение очищать надо?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter