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]

Reply via email to