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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2009, 13:40   #41
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
а в других соответствующей ей нет не будет. количество записей во всех таблицах будет равным.
А!! Я БЫЛ НЕПРАВ!!! (вот что к чему приводит небольшой дисплей и чтение "по диагонали" )


безусловно, в данном случае дело решит один простой цикл!
Код:
for i:=0 to Form1.SG1.RowCount-1
p.s. не помню тонкости StringGrid'а, но, имхо, цикл, должен быть от нуля...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.12.2009, 17:54   #42
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Сделал так:
Код:
procedure TForm13.sBitBtn1Click(Sender: TObject);
var
 i,j,k:integer;
begin
 for i:=1 to Form1.SG1.RowCount-1 do
 if IntToStr(Form1.SG1.RowCount) <> '' then

 begin
 Form13.pFIBQuery_vstavka.SQL.Clear;
 Form13.pFIBQuery_vstavka.SQL.Text:='INSERT INTO REZULT(ID,IDINFO,IDPREDMET,IDCHEVERT,DVOEK,TROEK,CHETVEROK,PYTEROK,KO,SB,KY,Y,O,CHO,PROPUSKI) 
VALUES(null,:INFO,:IP,:ICH,:DV,:TR,:CH,:PYT,:K1,:S,:K2,:Y,:O1,:C,:P)';

 Form13.pFIBQuery_vstavka.ParamByName('INFO').Value:=Form1.SG1.Cells[4,i];

 Form13.pFIBQuery_vstavka.ParamByName('IP').Value:=Form18.sLabel8.Caption;
 Form13.pFIBQuery_vstavka.ParamByName('ICH').Value:=Form18.sLabel7.Caption;

 Form13.pFIBQuery_vstavka.ParamByName('K1').Value:=Form1.SG3.Cells[0,i];
 Form13.pFIBQuery_vstavka.ParamByName('S').Value:=Form1.SG3.Cells[1,i];
 Form13.pFIBQuery_vstavka.ParamByName('K2').Value:=Form1.SG3.Cells[2,i];
 Form13.pFIBQuery_vstavka.ParamByName('Y').Value:=Form1.SG3.Cells[3,i];
 Form13.pFIBQuery_vstavka.ParamByName('O1').Value:=Form1.SG3.Cells[4,i];
 Form13.pFIBQuery_vstavka.ParamByName('C').Value:=Form1.SG3.Cells[5,i];

 Form13.pFIBQuery_vstavka.ParamByName('DV').Value:=Form1.SG2.Cells[0,i];
 Form13.pFIBQuery_vstavka.ParamByName('TR').Value:=Form1.SG2.Cells[1,i];
 Form13.pFIBQuery_vstavka.ParamByName('CH').Value:=Form1.SG2.Cells[2,i];
 Form13.pFIBQuery_vstavka.ParamByName('PYT').Value:=Form1.SG2.Cells[3,i];
 Form13.pFIBQuery_vstavka.ParamByName('P').Value:=Form1.SG2.Cells[4,i];

 Form13.pFIBQuery_vstavka.ExecQuery;
 end;
end;
В итоге в БД заносятся все строки. И пустые тоже, а пустые не нужны мне в БД...
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось mihali4; 26.12.2009 в 18:12.
artemavd вне форума Ответить с цитированием
Старый 27.12.2009, 18:15   #43
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
p.s. не помню тонкости StringGrid'а, но, имхо, цикл, должен быть от нуля...
имхо там наверняка еще в первой строчке шапка таблицы с пояснением что там в какой колонке живет
поэтому цикл с 1

Цитата:
Сообщение от artemavd Посмотреть сообщение
if IntToStr(Form1.SG1.RowCount) <> '' then
это не проверка на пустые строки
это ваще не пойми чо
непустой стринггрид это вот что
Код:
if Form1.SG1.RowCount > 0 then
и тогда здесь высматривается несоответствие заявленной обязательности одинакового числа строк во всех стринггридах
soleil@mmc вне форума Ответить с цитированием
Старый 28.12.2009, 18:07   #44
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Цитата:
и тогда здесь высматривается несоответствие заявленной обязательности одинакового числа строк во всех стринггридах
Имеете ввиду, что тогда нет гарантии, что количество строк во всех трех таблицах будет одинаково?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.12.2009, 18:19   #45
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Имеете ввиду, что тогда нет гарантии, что количество строк во всех трех таблицах будет одинаково?
из приведенного кода вообще ничего по этому поводу не видно
может у тебя априори везде по 5 строчек и их кол-во не меняется
а разница только в том что где-то вбиты данные, а где-то нет
тогда тебе нужно проверять сами ячейки на заполненность (цикл таким же и остается) - шевели серыми клетками
soleil@mmc вне форума Ответить с цитированием
Старый 28.12.2009, 18:47   #46
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

В результате работы этого кода:
Код:
procedure TForm13.sBitBtn1Click(Sender: TObject);
var
 i,j,k:integer;
begin
 for i:=1 to Form1.SG1.RowCount-1 do
// if Form1.SG1.RowCount > 0 then
 begin
 Form13.pFIBQuery_vstavka.SQL.Clear;
 Form13.pFIBQuery_vstavka.SQL.Text:='INSERT INTO REZULT(ID,IDINFO,IDPREDMET,IDCHEVERT,DVOEK,TROEK,CHETVEROK,PYTEROK,KO,SB,KY,Y,O,CHO,PROPUSKI) VALUES(null,:INFO,:IP,:ICH,:DV,:TR,:CH,:PYT,:K1,:S,:K2,:Y,:O1,:C,:P)';

 Form13.pFIBQuery_vstavka.ParamByName('INFO').Value:=Form1.SG1.Cells[4,i];

 Form13.pFIBQuery_vstavka.ParamByName('IP').Value:=Form18.sLabel8.Caption;
 Form13.pFIBQuery_vstavka.ParamByName('ICH').Value:=Form18.sLabel7.Caption;

 Form13.pFIBQuery_vstavka.ParamByName('K1').Value:=Form1.SG3.Cells[0,i];
 Form13.pFIBQuery_vstavka.ParamByName('S').Value:=Form1.SG3.Cells[1,i];
 Form13.pFIBQuery_vstavka.ParamByName('K2').Value:=Form1.SG3.Cells[2,i];
 Form13.pFIBQuery_vstavka.ParamByName('Y').Value:=Form1.SG3.Cells[3,i];
 Form13.pFIBQuery_vstavka.ParamByName('O1').Value:=Form1.SG3.Cells[4,i];
 Form13.pFIBQuery_vstavka.ParamByName('C').Value:=Form1.SG3.Cells[5,i];

 Form13.pFIBQuery_vstavka.ParamByName('DV').Value:=Form1.SG2.Cells[0,i];
 Form13.pFIBQuery_vstavka.ParamByName('TR').Value:=Form1.SG2.Cells[1,i];
 Form13.pFIBQuery_vstavka.ParamByName('CH').Value:=Form1.SG2.Cells[2,i];
 Form13.pFIBQuery_vstavka.ParamByName('PYT').Value:=Form1.SG2.Cells[3,i];
 Form13.pFIBQuery_vstavka.ParamByName('P').Value:=Form1.SG2.Cells[4,i];

 Form13.pFIBQuery_vstavka.ExecQuery;
 end;
end;
В результате таблица заполняется так как во вложении. Последняя строка добавляться не должна вообще...
Изображения
Тип файла: jpg Безымянный.jpg (53.5 Кб, 144 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FireBird Д'якон БД в Delphi 2 04.12.2008 11:15
FireBird 1.5.4 Nikola__ БД в Delphi 2 17.11.2008 14:42
Как получить ID для новой записи с использованием триггеров?(Firebird) Paul Hindenburg БД в Delphi 20 01.06.2008 16:39
Вставка записи в поле графического типа Bibigul БД в Delphi 3 10.04.2007 16:07