Направих го както ADO е предложил и всичко е наред до момента в който започвам да въвеждам данни. При натискане на бутона ми излиза съобщение за грешка, пише че ЕГН2, ЕГН3 са невалидни параметри и нищо не се въвежда в таблиците. Явно пропускам нещо но незнам къде бъркам. Сега ще опиша нещата по точно. Та значи таблиците съдържат следната информация:
1.Клиенти ( ЕГНК, ЛК№, ИмеК, ДИЛК, ИМВР )
2.Адреси ( ID, ЕГНК, Ул, ПК, Град, Тел, СП, Деца, РБТ, ЕГНС )
3.Молби ( Вх.№, ЕГНК, ДПМ, Доход, Размер, НПП, ДОП, КодП )
4.Съпрузи ( ЕГНС, ИмеС )
5.Деца ( ID, ЕГНК, ИмеД, ЕГНД )
6.Социални работници ( Ул, СР )
7.Решения ( ID, ЕГНК, ДПМ, Реш )
8.Помощи ( ID, ЕГНК, КодП, ВидП, ЗООП, Срок )
ЕГН на клиента (ЕГНК) е чужд ключ почти във всички релации но чрез него се прави връзка между таблиците.
Във формата на Delphi трябва да въведа следните данни:
ЕГНК в таблиците Клиенти, адреси, деца;(ЕГНК в останалите таблици се въвежда в друга форма)
ЕГНС в таблиците адреси и съпрузи;
Ул в табл. адреси и соц. Работници
Това са проблемните данни другите се въвеждат само в една таблица и там няма проблем.
До момента съм направила следното:
В CommandText на ADOCommand съм написала:
insert into Registraciq1(така се казва view)
(EGNK, ImeK, LKN, DILK, IMVR, EGNK2, PK, Grad, Tel,S P, Deca, RBT, EGNS, Ul1, EGNK3, EGND, ImeD, SR, Ul, EGNS2, ImeS) values (:EGNK,:ImeK,:LKN,:DILK,:IMVR,:EGNK2,:PK,:Grad,:Tel,:SP,:Deca,:RBT, :EGNS,:Ul,:EGNK, :EGND, :ImeD,:SR, :Ul,:EGNS2, :ImeS)
на on click на бутона е следното:
procedure TForm5.Button3Click(Sender: TObject);
begin
if (DBEdit13.text='1')then
begin
DataModule24.ADOCommand1.Parameters.ParamValues['EGNK; EGNK2; EGNK3; ImeK; LKN; DILK; IMVR; PK; Grad; Tel; SP; Deca; RBT; ImeS; EGND; ImeD; EGNS; SR; EGNS2; Ul; Ul']:= VarArrayof
( [ DBEdit1.Text, DBEdit1.Text, DBEdit1.Text, DBEdit5.Text, DBEdit2.Text, DBEdit3.Text, DBEdit4.Text, DBEdit6.Text, DBEdit7.Text, DBEdit10.Text,
DBComboBox1.Text, DBEdit9.Text, DBComboBox2.Text, DBEdit12.Text, DBEdit14.Text, DBEdit20.Text, DBEdit11.Text, DBEdit13.Text, DBEdit11.Text,
DBEdit8.Text, DBEdit8.Text]);
DataModule24.ADOCommand1.Execute;
end
else if (DBEdit13.text<>'1')then
messageDlg('Грешен номер',mtError,[mbok],0)
А това е SQL кода на view-то:
SELECT TOP 100 PERCENT dbo.Klienti.EGNK, dbo.Klienti.ImeK, dbo.Klienti.LKN, dbo.Klienti.DILK, dbo.Klienti.IMVR, dbo.Adresi.PK, dbo.Adresi.Grad,
dbo.Adresi.Tel, dbo.Adresi.SP, dbo.Adresi.Deca, dbo.Adresi.RBT, dbo.supruzi.ImeS, dbo.Deca.EGND, dbo.Deca.ImeD, dbo.Adresi.EGNS,
dbo.socrab.SR, dbo.Adresi.EGNK AS EGNK2, dbo.Deca.EGNK AS EGNK3, dbo.supruzi.EGNS AS EGNS2, dbo.socrab.Ul, dbo.Adresi.Ul AS Ul1
FROM dbo.SR INNER JOIN
dbo.socrab ON dbo.SR.SR = dbo.socrab.SR INNER JOIN
dbo.Adresi INNER JOIN
dbo.Klienti ON dbo.Adresi.EGNK = dbo.Klienti.EGNK ON dbo.socrab.Ul = dbo.Adresi.Ul LEFT OUTER JOIN
dbo.Deca ON dbo.Klienti.EGNK = dbo.Deca.EGNK LEFT OUTER JOIN
dbo.supruzi ON dbo.Adresi.EGNS = dbo.supruzi.EGNS
WHERE (dbo.socrab.SR = 1)
ORDER BY dbo.Klienti.EGNK
Може би проблема е че във view-то не може да се записват данни а се записват директно в таблиците а в тях няма такива атрибути, но ако сменя имената на атрибутите в основните таблици няма да мога да направя връзките след това.
Надявам се някой да ми помогне като каже къде бъркам нещо или да даде друга идея как да го направя това въвеждане на данни, така че данните да се въвеждат във всички таблици.
|