01. marts 2007 - 17:27Der er
14 kommentarer og 1 løsning
Skal jeg bruge count her?
Daaaavs.
Sidder (stadigvæk) og bøvler med et forum. Jeg skal nu til det punkt hvor folk kan skrive indlæg i databasen og jeg skal have talt en kolonne op så jeg finder det højeste tal i den og så lægge en til.
Så altså:
Lige nu er jeg på teststadiet hvor der ligger 11 posts i min db og det sidste tal altså er 11, jeg skal have talt op så jeg finder det højeste tal og ligge en til, så det kan blive gemt i db'en igen, hvis man vælger at oprette et nyt, istedet for at oprette et til.
Select MAX(kolonnenavn) + 1 AS HoejesteTalPlusEn From tabelnavn
Men hvis jeg har forstået det, du spørger om rigtigt, er det så ikke nemmere, at lave en ID-kolonne med "identity" på 1. Den fyldes automatisk ud, når du indsætter en post, og du kan selv bestemme, om tallet skal stige med 1, 2, 3 .....
Det er bare for at give en navn til kolonnen i svartabellen. Du kan bare udelade det, så vil kolonnenavnet være noget med MAX(Kolonnenavn). Ved at bruge et alias (AS HoejesteAntalPlusEN) giver jeg kolonnen et navn, som jeg bestemmer. AS "AliasNavn" kan du altid bruge også typisk på en SELECT over flere tabeller, hvor der kan være kolonner, der hedder det samme. Så kan du ved hjælp af AS "AliasNavn" omdøbe den ene i svartabellen.
Har du prøvet at køre din sql fra Query-analyzeren, for at tjekke om du får det rigtige ud?, eller kan det skyldes noget med rettigheder på tabellen.
vb er ikke mit yndlingsspil, men det kan måske også være den måde, du tilgår data på.
I C# ville jeg måske tilgå data således:
Først hent data ind i et dataset "MitDataSet"
foreach (DataRow drMinDataRow in MitDataSet.Tables[0].Rows) { int tal = int.parse(drMinDataRow["kolonnenavn"].ToString()); } Duer selvfølgelig kun, hvis der erturneres nøjqagtig en post, men det gør der, hvis ellers tabellen er tilgængelig.
Så måske skal det være noget med strSQL = CInt(objDataAcc.GetPostID.Tables[0].Rows(0).Item("fldPostID"))
Med den fejlmeddelse, så har det intet med din vb kode, at gøre. Det er enten en syntaksfejl, stavefejl som f.eks. "sleect" i stedet for select, eller at du har brugt et reserveret ord. F.eks. kalder en variabel for "if"
Prøv at køre sql-sætningen fra SQL Query analyzeren. Så kan du forsøge, indtil, du får det til at virke.
Jeg tror, at det skyldes at du skal flytte dit +1 til før AS, så der i stedet står:
SELECT MAX (fldPostID) + 1 AS PostIdentification FROM tblHotline
Og ellers så ville jeg prøve følgende, for at se om det hjælper:
SELECT fldPostID FROM tblHotline SELECT MAX(fldPostID) FROM tblHotline SELECT MAX (fldPostID) AS PostIdentification FROM tblHotline SELECT MAX (fldPostID) + 1 AS PostIdentification' FROM tblHotline
Så kan du se, hvornår fejlen opstår
Det er altid en god ting, at få sql'en til at virke, før du bruger den fra dit programmeringsværktøj.
Hej igen. Træls, havde desværre skrevet en lang besked, men den gik åbenbart tabt og blev ikke posted, men nu er fejlen måske fundet.
Som jeg skrev tidligere så er det som jeg regnede med, SQL-sætningen og ikke koden det var galt med. Jeg prøvede systematisk som du skrev og kom til SELECT MAX(fldPostID) FROM tblHotline og der går det galt. Den siger: Column 'fldPostID' does not belong to table Table.
Og nu melder den korrekt værdi; 16. Den færdige sætning blev altså:
SELECT MAX(fldPostID) + 1 AS newPI FROM tblHotline
Så jeg siger mange tak for hjælpen :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.