22. februar 2006 - 14:04Der er
7 kommentarer og 1 løsning
Error converting data type varchar to numeric
Hejsa,
jeg sidder og er ved at opbygge et view, som jeg skal bruge til videre udtræk af data, men jeg får ovenstående fejl, når jeg prøver at "køre" det inde fra hvor jeg opbygger view'et...
Jeg har fundet ud af at det er flg. linie, der giver mig problemet: ISNULL((SELECT TOP 1 Fee FROM RemLtr WHERE RemLtr.Ctry = Actor.Ctry AND RemLtr.LtrNo = OpCustTr.Rems); '')
Jeg kan oplyse flg. RemLtr.LtrNo = tinyint Actor.Ctry = int OpCustTr.Rems = tinyint RemLtr.Ctry = int
og resten af mit view ser ud som følger, bare for en god ordens skyld: SELECT dbo.OpCustTr.*, ISNULL ((SELECT TOP 1 ISO FROM Cur WHERE CurNo = OpCustTr.Cur), '') AS Cur_ISO, ISNULL ((SELECT TOP 1 txt FROM txt WHERE txt.lang = actor.lang AND opcusttr.votp = txt.txtno AND txt.txttp = 165), dbo.OpCustTr.Txt) AS TstSprog, dbo.GetCmpTxt(dbo.Actor.Lang, 2, dbo.OpCustTr.Rems) AS Ryk_Txt, dbo.GetCmpTxtUl(dbo.Actor.Lang, 2, dbo.OpCustTr.Rems) AS Ryk_TxtUl FROM dbo.OpCustTr INNER JOIN dbo.Actor ON dbo.OpCustTr.CustNo = dbo.Actor.CustNo
Jeg håber der er en af jer derude, der kan komme med en ide til hvordan jeg får dette løst...
Jeg bruger Microsoft SQL Server 2000 - hvis det kan hjælpe nogle...
og mit overliggende ERP system, hvis database jeg skal lave udtrækket fra Er Visma
resten af mit view kører fint, incl. det med txt.txttp = 165 - det er først efter jeg smider flg. ind: ISNULL((SELECT TOP 1 Fee FROM RemLtr WHERE RemLtr.Ctry = Actor.Ctry AND RemLtr.LtrNo = OpCustTr.Rems); '')
Top 1 giver mig den første instans med indhold i - også uden en Order By - det er en funktion jeg bruger tit...
Og ja, der skal være et semikolon ; - ellers giver den en fejlmelding - kører man med en anden version (mener egentlig kun at det er sprog) så kan man istedet bruge et komma ,
Du, eller rettere I, skriver at jeg skal tjekke mine datatyper i mine where sætninger...
den jeg får fejlen på - den med RemLtr - den har jeg remset mine datatyper op på i mit spørgsmål - der er ingen uoverensstemmelser der...
Og resten - det der står med "select dbo.OpCustTr..." osv - det virker fint - jeg har brugt det i flere eksterne rapporter - så det har jeg tjekket masser af gange, der er ingen fejl mht. datatyperne...
Jeg skulle bare have den nye linie med, da den henter mit rykkergebyr med over, hvis der findes noget - det er derfor jeg bruger en ISNULL, så jeg kan styre hvad der skal ud, hvis der ikke er noget...
Hej igen, så fik jeg fundet min fejl, min linie skulle være som følger: ISNULL((SELECT TOP 1 Fee FROM RemLtr WHERE RemLtr.Ctry = Actor.Ctry AND RemLtr.LtrNo = OpCustTr.Rems); 0)
Min fejl var at jeg havde '' som værdi i min ISNULL og et tal kan jo ikke være ingenting, hvis jeg satte den til 0, så virkede det...
Jeg smider lige selv et svar, da ingen af jer har svaret men blot er kommet med kommentarer, som ikke rigtig har givet mig det rigtige...
Jeg fik jo ret, men det eneste jeg gjorde var at oversætte fejlmeldingen til dansk.
Du bruger semikolon fordi du skriver din ISNULL ind i View designeren, i den færdige kode bliver det lavet om til komma.
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.