Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2009, 15:35   #1
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию из дбгрид в sql server

Люди прошу помощи, т.к. не могу понять в чем проблема.\
В общем, хочу добавить в БД значения
date_____|val
01.02.2009|0.5
01.02.2008|0.75
01.02.2009|4.75
и т.д.
дата берется из datetime picker,val из дбгида.
вот код мой
Код:

if  dbgrid1.DataSource.DataSet.FieldByName('Vol_Code').AsString=dbgrid2.DataSource.DataSet.FieldByName('Vol_Code').AsString
then
  begin
  dbgrid3.DataSource.DataSet.First;
  while not dbgrid3.DataSource.DataSet.EOF do
  begin
     s:=s+(dbgrid3.DataSource.Dataset.Fields[5].asinteger, ffGeneral, 8, 0);
     dbgrid3.DataSource.DataSet.Next;
     end;
 DataMod.INSERT_GTP.Parameters.ParamByName('DateDST').Value:=calDatePicker.Date;//INSERT_GTP-adoquery
 DataMod.INSERT_GTP.Parameters.ParamByName('VolPlan').Value:=strtoint[i];
 DataMod.INSERT_GTP.Execute;
   END;
вот только ерунда какая то получается.ну не вижу я ошибки..
sql server,adoquery,adocommand

Последний раз редактировалось kate158; 25.08.2009 в 16:12.
kate158 вне форума Ответить с цитированием
Старый 25.08.2009, 16:02   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

1) какая ерунда получается?
2) какой текст запроса DataMod.INSERT_GTP ?
3) раз это кусок кода, то зачем там используется массив значений dbVolPlan, но нет цикла по i ?
4) и в продолжение п.3 - а что там в поле dbgrid3.DataSource.Dataset.Fields[5].asstring? и что получается когда по этому датасету пробежится цикл - небось список циферок и десятичных разделителей, который накапливается (потому что не видно обнуления строковой переменной s)?
soleil@mmc вне форума Ответить с цитированием
Старый 25.08.2009, 16:08   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Катя, извините, если мой пост окажется для Вас бесполезным, но:

1) какая ерунда получается?... её отсюда не видно ;(

2) dbVolPlan - размер массива не забываете задать?
А где i задаётся и наращивается?

3) какой текст вставки в INSERT_GTP

4) Vol_code в dbGrid1 и dbGrid2 одинаковые!? может Вы вообще внутрь не попадаете?..

5) и последнее, и ГЛАВНОЕ, а что за странный код - вы берёте 6-е поле в dbGrid и собираете все строчки в одну переменную s там что, в гриде, в одной строчке 0 во, второй точка, в третьей семёрка, а в четвёртой строке пятёрка!?

__________________
soleil@mmc, я Вам клянусь — писал вопросы не видя Ваш пост... а как совпало то!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.08.2009, 16:10   #4
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

1. вылазит ошибка floating point overlow
2.насчет массива пока не знаю както он коряво у меня написан)
3.adocommandtext-insert into GTP_RESULTS (DateDST, VolPlan ) values (:DateDST, :VolPlan)
4.vol_ code одинаковые
5.в dbgrid3.DataSource.Dataset.Fields[5].asstring - дробные числа

Последний раз редактировалось kate158; 25.08.2009 в 16:19.
kate158 вне форума Ответить с цитированием
Старый 25.08.2009, 16:19   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

...исходный код задачи меняется, но ясности не добавляется
поставьте точку останова в строчке где у вас IF прописан и пройдите пошагово - пары итераций в цикле while должно хватить для ясности

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
soleil@mmc, я Вам клянусь — писал вопросы не видя Ваш пост... а как совпало то!
верю
soleil@mmc вне форума Ответить с цитированием
Старый 25.08.2009, 16:24   #6
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
Сообщение

есть и длина и вэрибл i
Код:
SetLength(dbVolPlan,25);
   for i:=1 to dbgrid3.DataSource.dataset.RecordCount-2 do
пошагово было.
в общем числа
22
45
56
записываются в строку как 224556

Последний раз редактировалось kate158; 25.08.2009 в 16:39.
kate158 вне форума Ответить с цитированием
Старый 25.08.2009, 16:41   #7
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от kate158 Посмотреть сообщение
пошагово было.
в общем числа
22
45
56
записываются в строку как 224556
у вас не только "веселые" разработчики базы, но еще и программного кода
а потом чтобы эти числа показать в гриде вы наверное их разбиваете на числа по 2 цифры?

ну дык в чем проблема в итоге?
после ваших изменений в коде стратового поста - код стал еще более нерабочим:
это хоть и недописано
Код:
s:=s+(dbgrid3.DataSource.Dataset.Fields[5].asinteger, ffGeneral, 8, 0);
но легко можно заменить на это
Код:
s:=s+dbgrid3.DataSource.Dataset.Fields[5].AsString;
а правильность ввода лучше контролировать в момент ввода данных

и, видимо, как результат конкатенации чисел (большого их кол-ва) - переполнение - посмотрите на досуге справку по размерности integer и double
soleil@mmc вне форума Ответить с цитированием
Старый 25.08.2009, 16:56   #8
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

просто взрыв мозга.
ладно,щас ченить придумаю.спасибо
kate158 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обмен с SQL Server Lexx_forum Microsoft Office Excel 1 16.02.2009 11:45
Доступ к БД (SQL server) в ОС Windows server 2003 Mann SQL, базы данных 2 07.12.2008 19:15
C# + SQl server kommunist Общие вопросы .NET 0 24.07.2008 21:09
MS SQL Server AlexDoul БД в Delphi 3 22.11.2007 09:33