Salut Bogdane,
Problema ta cred ca consta in a lega doua tabele, una tip master locatii si
una details gestiuni. Defineste locatiile intr-o structura de genul:
id locatie
denumire locatie
etc, asta ar trebui sa fie structura tabelei master
si tabela detail in structura:
id locatie
id gestiune
denumire gestiune
etc
Pentru fiecare tabela defineste o cheie primara din id_locatie pentru tabela
master si id_locatie+denumire gestiune pentru tabela detail.
In proprietatile tabelei detail la master detail selecteaza tabela de locatii
si la cimpurile de legatura id_locatie din tabela master si id_locatie din
tabela detail( uzual se numeste si child)
In forma pune un control de tip TDBGrid cu sursa tabela master(locatii) si
inca un control de acelasi tip cu sursa detail(gestiuni). Executa un open pe
ambele tabele si in grid-ul master vei avea locatiile, iar in gridul detail vei
avea gestiunile locatiei respective.
Pentru a cauta o locatie anume, introdu un cimp edit in forma si un buton cu
caption Cautare. introduci in TEdit control locatia de cautare si peonclick-ul
butonului de cautare exexuti instructiunea
dmmodule.dataset.tablename.LOCATE('ID_LOCATIE', [TEditcontrol.text], '');
instructiune care iti pozitioneaza cursorul pe inregistrarea dorita daca o
gaseste dupa continutul TEdit control sau iti returneaza FALSE daca nu o
gaseste.
Scapi in felul acesta de procedurile stocate pentru actiuni uzuale.
Oricum la definirea unei proceduri stocate ai niste proprietati care definesc
parametrii de apel si parametrii de retur, le definesti natura si valoarea
implicita, ii initializezi cu proprietatea parambyname si apelezi procedura
stocata.
Procedura stocata trebuie sa aibe in descriere parametrii apelanti si
parametrii de retur. In Oracle exista ceva de genul CREATE "PROCEDURA"
Inputvalue ..... output value corp procedura
Asa cum ai definit tu procedura respectiva, variabila ta @nume variabila este
considerata o variabila locala si nu este returnata ca rezultat.
Daca vrei mai multe detalii ma poti contacta aici pe adresa [EMAIL
PROTECTED], sau pe adresa mea personala [EMAIL PROTECTED] sau pe yahoo mess id
armitage49
cu stima
Adrian POPA
Fie ca programarea sa iti lumineze viata, sa iti bucure ochiul ziua precum
femeia noaptea (tare nu ?, am copiat-o dintr-un alt mail al unui programator)
bogdan_pricop <[EMAIL PROTECTED]> wrote:
Hello,
First of all You must know that I'm kind of new to Delphi.
Background:
I need to write an app that reads and write data from/in MSSQL, and do
this with stored procedures.
My problem: I have made a form on witch I put:
SQLConnection1: TSQLConnection;
//Societate= Company name
//StorePorc: GEN_ZoomSocietati ; no parameter required, return
data in dsSoc
dsSocietate: TDataSource;
sdsSocietate: TSQLDataSet;
cblSocietate: TDBComboBox;
//Locatie = Location
//StorePorc: GEN_ZoomDimensiuni ; no parameter required, return
data in dsLoc
dsLocatie: TDataSource;
sdsLocatie: TSQLDataSet;
cblLocatie: TDBComboBox;
// Gest =
//StorePorc: THG_GetGestiune ; parameter: idlocatie
// return a list of things that are linked by Location by the
idlocation field
dsGest: TDataSource;
sdsGest: TSQLDataSet;
cblGest: TDBComboBox;
I can execute the StoredProc that are without any params, and get the
date, and populate the combos like this:
dsSocietate.DataSet.First;
while not dsSocietate.DataSet.Eof do
begin
ss:= ToString(dsSocietate.DataSet.FieldValues['societate']);
cblSocietate.Items.Add(ss);
dsSocietate.DataSet.Next;
end;
dsLocatie.DataSet.First;
while not dsLocatie.DataSet.Eof do
begin
ss:= ToString(dsLocatie.DataSet.FieldValues['denumire']);
cblLocatie.Items.Add(ss);
dsLocatie.DataSet.Next;
end;
Here is my THG_GetGestiune StoreProc
CREATE PROCEDURE THG_GetGestiune
@idlocatie INT = NULL
AS
SET NOCOUNT ON
SELECT g.codgestiune, g.denumire, g.descarcare, g.codpersoana,
g.codgestionar
FROM thg_locatii_gestiuni lg
INNER JOIN gestiuni g ON lg.codgestiune = g.codgestiune
WHERE lg.idlocatie = @idlocatie
SET NOCOUNT OFF
THE QUESTION:
How can I pass a parameter to this stored procedure?
I have tried with:
sdsGest.CommandType := ctStoredProc;
sdsGest.CommandText := 'THG_GetGestiune';
sdsGest.ParamByName('@idlocatie').Value := 9;
sdsGest.ExecSQL;
and aplication crash with message "List out of bounds(0)"
Please help,
Tanks in advance
---------------------------------
Be a PS3 game guru.
Get your game face on with the latest PS3 news and previews at Yahoo! Games.
[Non-text portions of this message have been removed]