Új gondom van. Megintcsak feltúrtam a netet ;), de nem eddig nem találtam megoldást...
File-okat kiolvasok stringbe, majd beírnám egy BLOB mezőbe (mindezt sql server 2000 alatt, PHP 4.3.3-al). A http://hu2.php.net/manual/hu/function.mssql-query.php oldal egyik kommentje szerint ez nem megy simán, hanem hexává kell konvertálni a stringet, és úgy. Nos, ez nekem nem ír be semmit. Az addslashes és tsai:
[i]$sqlbe = ( get_magic_quotes_runtime() ) ? "'{$ertek}'," : "'".addslashes($ertek)."',"[/i]
pedig nem "ütik ki" az összes zavaró karaktert.
A MS ("kissé" zavaros és áttekinthetetlen) dokumentációs oldalain az [b]SQLPutData[/b] és a [b]UPDATETEXT[/b] izéket találtam, de egyik sem tűnik használhatónak.
Amit szeretnék (ha lehet): egy olyan függvény (PHP vagy SQL, mindegy), ami lehetőleg beilleszthető egy UPDATE parancsba. Ötlet van? Köszi:
.mind
Tudom hogy ez a fejlövésed, egyet is értek veled, de most kicsit mellélőttél. :) Igen, kerestem. Sokat. Azonban ha nem pontosan tudod mit keresel, akkor elég nehéz ügy, és most ez történt. Szóval nem sikerült, pár óra után feladtam, itt pedig kaptam választ. :)
altalaban a karakter formazassal kapcsolatos sql fugvenyeket az adott sql dokumentaciojaban a karakter formazasi resznel talalod... ha felmerul benned valamilyen matematikai fugveny, azt is megtalalod a megfelelo helyen :) Amennyiben keresed.
Ühüm. Ha jól értelmezem, ezzel mind a beírt keresőkifejezést, mind a keresett értékeket csupa nagybetűre váltom, és így tűnik el a különbség? És akkor mondjuk ez működik lower-rel is, mert tökmindegy? :) És megtalálja az "ertek"-et, az "ERTEK"-et meg az "eRTeK"-et is...
Köszi! Lehet béna vagyok, de ezt nem tudtam. Pedig alapfoknak tűnik erősen, így utólag... :)
Meg kellene oldanom, hogy egy SELECT keresőstringjeinél ne vegye figyelembe a kis/nagybetűket, tehát mindent találjon meg. Keresgéltem infót, de nem nagyon jutottam eredményre. Odáig megvan hogy kollatáció, de nagyon sok, már meglévő táblám van, ezeket meg nem akarom/tudom állítgatni...
Valamiféle beépített függvény lenne az ideális megoldás, ami a kollatációtól függetlenül erőlteti ezt, mondjuk mittomén "... WHERE mezonev = KISNAGYBETU(ertek)", ahol megtalálja nekem "ertek"-et meg az "ERTEK"-et is. Létezik egyáltalán ilyesmi, vagy hasonló egyszerű megoldás?
IktJel : varchar(1) IktEvszam : smallint IktSorszam : int
Ezt a három mezőt szeretném egy lekérdezésben összfűzni úgy, hogy, ha IktJel='X', IktEvszam='2007' és IktSorszam='123' akkor a köv. jelenjen meg a lekérdezésben:
erdekes modon nekem google elso talalta pont a termek oldalara vitt, es onnan http://www.microsoft.com/sql/editions/express/features.mspx es talan Scalability and Performance resz is errol szol. Erdekelne te hol kerested, hogy nem leltel semmit.
Sikerült megoldanom (hamarabb kellett volna agyalnom)
create procedure bizszam_gener @biztomb char(6), @sor_id int, @fej_id int as declare @ujsorszam int declare @bt_sor int declare @bs_sor int declare @bf_sor int begin transaction update biztomb set f_ussz = f_ussz + 1 where f_biztomb = @biztomb AND f_ussz < f_vssz select @bt_sor=@@ROWCOUNT if @bt_sor=1 begin select @ujsorszam = f_ussz from biztomb where f_biztomb = @biztomb update gn_bsor set f_beszam=right('00000'+ltrim(str(@ujsorszam,5,0)),5) where ForrasID=@sor_id select @bs_sor=@@ROWCOUNT if @bs_sor=1 begin update gn_tfej set f_allapot='F' where ForrasID=@fej_id select @bf_sor=@@ROWCOUNT end else begin select @bf_sor=0 end end else begin select @bs_sor=0 select @bf_sor=0 end if @bt_sor<>1 or @bs_sor<>1 or @bf_sor<>1 begin rollback transaction return (1) end commit transaction return (0)
Sziasztok! Számotok alap dolgot szeretnék kérdezni, mert nekem nem egyértelmű (pár google cím átolvasása után sem)
Adott 3 tábla. Az egyikben az adott bizonylathoz tartozó legutolsó kiadott sorszám található (biztomb). Továbba fej tábla (gn_tfej) és a sorai (gn_bsor) Ha a sorba rögzítenek egy tételt, akkor egy tárolt eljárással szeretném a gn_bsor f_beszam mezőjét feltölteni a biztomb-ben tárolt köv sorszámmal (elkérem az utolsó sorszámot és növelem is 1-el) és a gn_fej f_allapot mezőjébe bejegyezni , hogy volt már rá feladás (f_allapot='F'). Ha bármely update meghiúsul, akkor a többinek sem kell(ene) végrehajtódnia. Erre ezt csináltam:
create procedure bizszam_gener @biztomb char(6), @sor_id int, @fej_id int as declare @ujsorszam int begin transaction bt update biztomb set f_ussz = f_ussz + 1 where f_biztomb = @biztomb AND f_ussz < f_vssz if (@@ROWCOUNT<>1) begin rollback transaction bt return (1) end else begin select @ujsorszam = f_ussz from biztomb where f_biztomb = @biztomb begin transaction bs update gn_bsor set f_beszam=right('00000'+ltrim(str(@ujsorszam,5,0)),5) where ForrasID=@sor_id if (@@ROWCOUNT <> 1) begin rollback transaction bs rollback transaction bt return (1) end else begin begin transaction bf update gn_tfej set f_allapot='F' where ForrasID=@fej_id if (@@ROWCOUNT<>1) begin rollback transaction bf rollback transaction bs rollback transaction bt return (1) end else begin commit transaction bf commit transaction bs commit transaction bt end end end return(0)
Ez - ha minden feltétel teljesül (vagyis van olyan biztomb, fej és sor rekord), akkor simán lefut. Viszont , ha bármely feltétel nem teljesül, akkor különféle hibaüzenetekkel elszáll. Mi a helyes megoldás?
ilyenkor erdemes lenne atnezned az adott adatbazis kezelo datum fugvenyeit mondjuk, ha datum konverziokrol van szo. SELECT DATEADD(s, 1167993027, '19700101')
hogy lehet egyszerűen int-ként tárolt dátumot olvasható formára meg vissza konvertálni? a unicenter nevű tünemény használja ezt a formát, pl. 2007.01.05 11:30 neki 1167993027 :-((
Köszi a technet-en találtam valamit. Tudja valaki hogy kell menteni a replikált adatbázisokat. Elég ha mentem az alap adatbázist és utánna megcsinálom ismét a replikációt, vagy jobb megoldás is van.
Sajna nem lehet nem 16 biteset használni, mert az alapprogi 16 bites access-ben van megírva. Így kell a 16 bites driver ami átalakítja a dolgokat 32 bitessé az meg továbbadja ahova kell...
Ilyen profiler-t honnan lehetne beszerezni? A server az 2005 express...
Ilyen nekem is szokott lenni Enterprise Managerben. Törléshez egy delete sql mondatot állit össze, és azt hajtja végre. A where feltétel összeállitásánál nem tud olyan egyedi azonositót belerakni, amivel a törlendő sort meg tudná határozni.