ACCESS +SQL20008 sql-file futtatása

ACCESS +SQL20008 sql-file futtatása
2010-01-24T19:54:37+01:00
2010-01-25T20:55:55+01:00
2022-11-16T10:10:37+01:00
rhn
Sziasztok !

Egy bizonyos feladat elvégzéséhez készítettem 3 sql-file-t. Ezek tartalmaznak kurzorokat, változókat, lekérdezéseket, insert meg update meg akármi utasításokat. Az sql-ben írtam őket, és elmentettem file-ként, így sql kiterjesztést kaptak. Van valamilyen mód arra, hogy egy access felületről gombnyomásra lefuttassam őket? Nincs se bemenő paraméter, se visszatérő érték. gyakorlatilag az access felől csak a file-név látszik. Egyébként adp-t készítettem, tehát valamilyen currentproject.connection.execute -szerű megoldás lenne a legjobb.

Próbáltam az sql-ből view-ként futtatni, lefut rendesen, de elmenteni már nem engedi. Baja van a USE paranccsal, meg a DECLARE szavakkal, meg lehet, hogy több mással is, de nekem ezek mindenképp kellenek.
Mutasd a teljes hozzászólást!
Egy egyszerűbb példa:

Private Sub Gombom_Click() Dim cnn As ADODB.Connection Dim cmd As ADODB.Command Dim RS As ADODB.Recordset Set cmd = New ADODB.Command Set cnn = CurrentProject.Connection With cmd .ActiveConnection = cnn .CommandText = "TaroltEljarasomNeve" .CommandType = adCmdStoredProc .Execute , , ADODB.adExecuteNoRecords End With Set cnn = Nothing Set cmd = Nothing End Sub

Persze, ez még csak a kezdet.
Még ismerkedned kell többek között a tárolt eljárások lehetőségeivel, pl. tranzakció kezelés, hibavizsgálat, visszatérési érték, stb.
Mutasd a teljes hozzászólást!

  • Próbáltam az sql-ből view-ként futtatni, lefut rendesen, de elmenteni már nem engedi.

    Bocsi, kitennéd/láthatnánk a script-et?
    Mutasd a teljes hozzászólást!
  • mind a 245 sort?
    Mutasd a teljes hozzászólást!
  • valahogy így kezdődik:

    USE Carla DECLARE @oonr varchar(10), @cunr varchar(10), @prnr varchar(10), @cikknap int, @khnap int, @minlejar date, @kelldb int, @kertdatum date, @arpdb decimal(8,2) DECLARE @nkbandb int, @raid int, @adobolmin int, @mindatumado date, @adobanvan int, @spg varchar(1), @opsorsz int, @prexcise bit DECLARE DatumPrior CURSOR FOR select dbo.OutOrders.OONR, Customers.cunr,dbo.OutOrders.OOKertDatum, dbo.OutProducts.OPprnr, dbo.Products.prnapig, dbo.OutProducts.OPdb, dbo.OutProducts.OParpdb, prcoo, opsorsz,prexcise FROM dbo.Customers INNER JOIN dbo.OutOrders ON dbo.Customers.CUNR = dbo.OutOrders.OOCustNR INNER JOIN dbo.OutProducts ON dbo.OutOrders.OONR = dbo.OutProducts.OPOnr INNER JOIN dbo.Products ON dbo.OutProducts.OPprnr = dbo.Products.PRNR WHERE (dbo.OutOrders.OOtipus <> 'VV') AND (dbo.Customers.CUprior = 1) AND PRcoo<>'G' AND prnapig is not null AND opauto='0' Order by oonr open DatumPrior;
    .
    tart, tart, tart.... és így végződik..

    end UPDATE OutProducts set opauto='1' WHERE OPOnr=@oonr AND OPprnr=@prnr FETCH next FROM DatumPrior into @oonr,@cunr,@kertdatum,@prnr,@cikknap,@kelldb,@arpdb, @spg, @opsorsz, @prexcise end close DatumPrior deallocate DatumPrior

    próbáltam privátba elküldeni, de azt mondja, az "üzenet szövege túl hosszú"
    Mutasd a teljes hozzászólást!
  • Bocsi, nem gondoltam hogy 245 sor!

    De, ha adatbázisba ("Carla") el kívánod menteni, akkor kell valami csomagoló, talán a legjobb egy tárolt eljárás lenne.

    Pl.

    USE [Northwind] GO /****** Object: StoredProcedure [dbo].[Usp_Customers_Select] Script Date: 01/24/2010 20:47:05 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[Usp_Customers_Select] AS SET NOCOUNT ON; SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers -- exec Usp_Customers_Select --(itt tesztelheted a kész eljárást)

    Ha e script-be bepakolod a magadét, esélyed lehet a mentésre.
    1. Northwind helyett Carla,
    2. Usp_Customers_Select helyett az új eljárás neve,
    3.
    SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers
    helyett a saját teendőid.
    Management Studio-val ezt egyszerüen összehozhatod, sőt
    az Execute ikon mellett a pipára katintva ellenőrizheted, s ha minden ok, akkor az execute-ra kattintva már futhat is az eljárás létrehozása.
    Mutasd a teljes hozzászólást!
  • Kipróbálom.
    És ha van S6tored Procedure-m, azt hogyan tudom access gombhoz kötni (kattintásra végrehajtsa) ?

    Már csak azért kérdezem, mert ez a szempont a fontos.
    Mutasd a teljes hozzászólást!
  • Segíthet..(How to Execute SQL Stored Procedures from Microsoft Access)
    Részletesen elregéli a tárolt eljárás hivási lehetőségeit.
    Elsőre picit bonyolultnak tűnhet, ám ha átrágod magad rajta, többet is megtudhatsz, mint ami jelenleg néked kell, de a későbbiekben hasznodra lehet.
    Mutasd a teljes hozzászólást!
  • Egy egyszerűbb példa:

    Private Sub Gombom_Click() Dim cnn As ADODB.Connection Dim cmd As ADODB.Command Dim RS As ADODB.Recordset Set cmd = New ADODB.Command Set cnn = CurrentProject.Connection With cmd .ActiveConnection = cnn .CommandText = "TaroltEljarasomNeve" .CommandType = adCmdStoredProc .Execute , , ADODB.adExecuteNoRecords End With Set cnn = Nothing Set cmd = Nothing End Sub

    Persze, ez még csak a kezdet.
    Még ismerkedned kell többek között a tárolt eljárások lehetőségeivel, pl. tranzakció kezelés, hibavizsgálat, visszatérési érték, stb.
    Mutasd a teljes hozzászólást!
  • Persze, ez még csak a kezdet.
    Még ismerkedned kell többek között a tárolt eljárások lehetőségeivel, pl. tranzakció kezelés, hibavizsgálat, visszatérési érték, stb.


    Ez (nagy bánatomra) igaz. Kipróbálom a javaslatodat, ha működik, elfogadottnak jelőlöm.
    Mutasd a teljes hozzászólást!
  • Sok sikert, és ne bánkódj, lesz még örömöd is benne!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd