Számláló alapra állítása

Számláló alapra állítása
2009-08-14T19:05:51+02:00
2009-08-19T17:29:09+02:00
2022-11-14T18:30:43+01:00
doolittle
A problémám az hogy hogyan lehet, ha lehet, Access 2007 MDB VB processben egy SQL szerver 2000-ből csatolt, üres tábla, számlálóját alaphelyzetbe állítani.
Mutasd a teljes hozzászólást!
szia

SQL szerver tárolt eljárás nagy vonalakban:

create procedure [dbo].[reset_identity] @tablename varchar(100), @seed int as DBCC CHECKIDENT ( @tablename, RESEED , @seed) WITH NO_INFOMSGS

sql szerverből igy lehet meghívni:

exec reset_identity 'egy_identitys_tabla', 0

a két paraméter : táblanév , számláló

Hogy accessből, hogyan hívod meg azt már rádbízom
Mutasd a teljes hozzászólást!

  • SQL utasítás végrehajtása: dbcc checkident (‘table_name’, reseed, 0)
    Mutasd a teljes hozzászólást!
  • A
    DoCmd.RunSQL " DBCC CHECKIDENT ('tábla_neve', RESEED, 0 )"
    hibát jelez. Mit csináltam rosszul?

    Látom a VB kategóriára történő utalás kikerült. Sajnálom.
    Mutasd a teljes hozzászólást!
  • mi a hibaüzenet? a tábla neve biztosan jó? vb meg azért keült ki a kategóriák közül, mert a megoldásnak nincs köze hozzá.
    Mutasd a teljes hozzászólást!
  • A tábla neve szerintem jó.

    A hibaüzenet:
    Run-time error'-2147217900 (80040e14)'; Érvénytelen SQL utasítás, használja a 'DELETE', az 'INSERT', a 'PROCEDURE', a 'SELECT', vagy az 'UPDATE' utasítások valamelyikét.


    CurrentProject.Connection.Execute használa esetén is ugyanez a helyzet.
    Mutasd a teljes hozzászólást!
  • ha jól gúglizok egy tárolt eljárást kéne készíteni mssql-ben.
    És azt meghívni accessben.


    de hogy azt hogy kell??? (google: stored procedure mssql access)
    Mutasd a teljes hozzászólást!
  • Akkor már két problémám van.

    Az egyik a megfelelő tárolt eljárás, a másik az accessből történő futtatása.

    Google és a Te segítségeddel a második felteszem megoldódik. Az elsővel viszont gondom van.

    Árnyék kódját, magam is csak ezt találtam a hálón, nem tudom tárolt eljárásba betenni. (Az SQL szerver nem az én világom.)

    Erről van valami ötleted, tapasztalatod?
    Mutasd a teljes hozzászólást!
  • sipeki
    Tábla számláló kezdeti értékének beállítása.

    Célszerű üres táblával használni. A beállított szám lesz a következő rekord számlálójának értéke.
    Dim cat As New ADOX.Catalog
    Set cat.ActiveConnection = CurrentProject.Connection
    cat.Tables("tábla1").Columns("id").Properties("Seed") = 1
    Set cat = Nothing
    Mutasd a teljes hozzászólást!
  • Sajnos ez SQL szerverből ODBC-vel csatolt táblánál nálam nem működik.
    Mutasd a teljes hozzászólást!
  • szia

    SQL szerver tárolt eljárás nagy vonalakban:

    create procedure [dbo].[reset_identity] @tablename varchar(100), @seed int as DBCC CHECKIDENT ( @tablename, RESEED , @seed) WITH NO_INFOMSGS

    sql szerverből igy lehet meghívni:

    exec reset_identity 'egy_identitys_tabla', 0

    a két paraméter : táblanév , számláló

    Hogy accessből, hogyan hívod meg azt már rádbízom
    Mutasd a teljes hozzászólást!
  • Köszönöm! Ez a része remekül működik. Holnap tudok a továbbin dolgozni.
    Mutasd a teljes hozzászólást!
  • A megoldás:

    Az alábbi tárolt eljárást használtam:

    CREATE procedure [dbo].[reset_identity as DBCC CHECKIDENT ("Tábla_neve" , RESEED, 0) WITH NO_INFOMSGS GO
    A tárolt eljárást VB-ből a következő kóddal futtatom.

    Dim Cnxn1 As ADODB.Connection Set Cnxn1 = New ADODB.Connection Cnxn1.ConnectionString = "Provider='sqloledb';Data Source='SZERVER_NEVE';" & _ "Initial Catalog='adatbázis_neve';Integrated Security='SSPI';" Cnxn1.Open Cnxn1.Execute ("reset_identity")

    Négy, számomra, új ismeretre volt szükség.
    1. DBCC CHECKIDENT ("Tábla_neve" , RESEED, 0)
    2. A fentinek tárolt eljárásba történő alkalmazására.
    3. Az execute kulcsszóra
    4. A megfelelő connection stringre.
    Az elsőt köszönöm Árnyéknak, a másodikat, és a harmadikat TPA-nak. Sajnos, valószínűleg az én "vakságom" miatt, nem tudtam használni Halinorbi keresési ajánlatát. Talán konkrétabb utalással jobb lett volna.
    Remélem látható, hogy nem bemásolható megoldást kerestem, de az SQL-beni gyakorlatlanságom miatt nem volt elegendő Árnyék segítsége. Így a pontot TPA- nak gondolom adni. A 10 pontos mérték nem őt minősíti, hanem az én tapasztalatlanságomat.
    Köszönöm a segítségeteket.
    Mutasd a teljes hozzászólást!
  • Nem vagyok nagy SQL mágus, de az ékezetes cuccokkal vigyázz a változó-nevekben és az elnevezésekben!!!!! Általánosságban elmondható, hogy nem egészséges gyakorlat!!!!! Kvázi időzített bomba ... előre nem tudhatod, hogy mikor fog valami idétlen hibaüzenetet hozni.
    Mutasd a teljes hozzászólást!
  • Köszi a figyelmeztetést.
    Valójában nem is használok ékezetes neveket. Itt csak a tartalomra utaló nevek vannak. Tehát a Tábla_neve helyére a tábla nevét kell írni. Pl. Tbl_tabla1
    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