[Microsoft][ODBC SQL Server Driver][SQL Server]Ambiguous column name 'DATASET' Två förslag: Ändrade till: och detta fungerar inte heller? Flåt.. det var ju det jag mena.. som du skrev.. glömde .. ;) Nä .. det fungera inte heller.. Jajamensan. ;) Jag menar inte att det inte spelar någon roll att där är två kolumner, för det behövs ju eftersom det körs en where... om jag tänker rätt iallafall.. skall göra en store procedure istället .. ger mig fan på att det kommer att funka.. Jo, det är ju skumt att den fungerar i QA... Har du provat med OLEDB istället för ODBC? Nope har inte testat med OLEDB.. har aldrig gjort det så då får du gärna definiera hur jag skall göra det.. Okej.. en rolig grej. alltså... Jag skulle gissa på att det är någon bugg i ODBC just med namnet DATASET. Testa byta namn på kolumnerna till något annat, DS t ex. Men det kvittar väl, du kör väl inget utan procedurer ändå? ;) Kära Christoffer.. Självklart gör jag alltid det ;) Jo, visst skulle du kunna fånga upp frågan som körs från ODBC i Profiler, men den borde väl vara samma som den du kör i QA?Ambigious Column Name
Det felet får jag på asp sidan.
Sql frågan i comisen ser ut såhär_
<code>
sql = "SELECT * FROM eStockFrSer CROSS JOIN ePurchTrans WHERE eStockFrSer.DATASET = 'TCC' AND eStockFrSer.ProdNumber = '" & prodnumber & "' AND eStockFrSer.ToSeriesNo = '" & toseriesno & "' AND eStockFrSer.ToItemNo = '" & toitemno & "' ORDER BY eStockFrSer.FromItemNo"
</code>
Kör jag den frågan i Query Analyser så fungerar den......
Några tips?Sv: Ambigious Column Name
- Testa skriva ut namnen (med tabell först) på alla kolumner som returneras istället för *.
- Testa att sätta [] runt DATASET, dvs eStockFrSer.[DATASET] = 'TCC'Sv: Ambigious Column Name
<code>
sql = "SELECT eStockFrSer.FromSeriesNo, eStockFrSer.FromItemNo, eStockFrSer.Qty, eStockFrSer.RowNumber, ePurchTrans.ItemNumber, ePurchTrans.Description FROM eStockFrSer CROSS JOIN ePurchTrans WHERE [DATASET] = 'TCC' AND eStockFrSer.ProdNumber = '" & prodnumber & "' AND eStockFrSer.ToSeriesNo = '" & toseriesno & "' AND eStockFrSer.ToItemNo = '" & toitemno & "' ORDER BY eStockFrSer.FromItemNo"
</code>
Fungiert nicths.. Sv: Ambigious Column Name
sql = "SELECT eStockFrSer.FromSeriesNo, eStockFrSer.FromItemNo, eStockFrSer.Qty, eStockFrSer.RowNumber, ePurchTrans.ItemNumber, ePurchTrans.Description FROM eStockFrSer CROSS JOIN ePurchTrans WHERE eStockFrSer.[DATASET] = 'TCC' AND eStockFrSer.ProdNumber = '" & prodnumber & "' AND eStockFrSer.ToSeriesNo = '" & toseriesno & "' AND eStockFrSer.ToItemNo = '" & toitemno & "' ORDER BY eStockFrSer.FromItemNo"Sv: Ambigious Column Name
Sv: Ambigious Column Name
Jag tycker det är skumma bananer, jag menar, frågan fungerar alldeles utmärkt i Query Analyzer, det är en simpel join, har inte gjort en lättare join förr, så funkar det inte. ;) Visst är där två likadana kolumner, men vad spelar det för roll? Jag definierar vilket värde som "bestämmer"...
Skumt...
Till en annan grej, weblogs ? Är det nåe att ha ? Såg att du brukade detta på din sida. Har läst lite om det, men har inte tiden och sätta mig in i det just nu. (Glöm inte sqlfrågan ;) )Sv: Ambigious Column Name
Sv: Ambigious Column Name
Weblogs: Tja, tyvärr räcker inte tiden till för att skriva i den så mycket som jag skulle vilja, men det är en utmärkt plattform för en enkel webbsite som min egen.Sv: Ambigious Column Name
Sv: Ambigious Column Name
om jag gör såhär.
SP: --
<code>
CREATE proc sproc_stuff
@PRODNUMBER VarChar(20),
@TOSERIESNO VarChar(20),
@TOITEMNO VarChar(20)
as
SELECT ESTOCKFRSER.FROMSERIESNO, ESTOCKFRSER.FROMITEMNO, ESTOCKFRSER.QTY, ESTOCKFRSER.ROWNUMBER, EPURCHTRANS.ITEMNUMBER, EPURCHTRANS.DESCRIPTION
FROM ESTOCKFRSER CROSS JOIN EPURCHTRANS
WHERE ESTOCKFRSER.DATASET = 'TCC'
AND EPURCHTRANS.DATASET = 'TCC'
AND EPURCHTRANS.PRODNUMBER = @PRODNUMBER
AND ESTOCKFRSER.PRODNUMBER = @PRODNUMBER
AND ESTOCKFRSER.TOSERIESNO = @TOSERIESNO
AND ESTOCKFRSER.TOITEMNO = @TOITEMNO
GO
</code>
ASP: --
<code>
<%
Set oConn = Server.CreateObject("ADODB.CONNECTION")
oConn.Open "xxxxxxxxx","xxxxxxxxx","xxxxxxxxxx"
strProdnumber = "9496"
strToseriesNo = "02-9496-01"
strToItemNo = "COMM-0918-AB01"
Set oCmd = Server.CreateObject("ADODB.COMMAND")
Set oCmd.ActiveConnection = oConn
oCmd.CommandText = "sproc_stuff"
oCmd.CommandType = 4
oCmd.Parameters.Append oCmd.CreateParameter("PRODNUMBER", 200, 1, 20, strProdnumber)
oCmd.Parameters.Append oCmd.CreateParameter("TOSERIESNO", 200, 1, 20, strToseriesNo)
oCmd.Parameters.Append oCmd.CreateParameter("TOITEMNO", 200, 1, 20, strToItemNo)
Set oRs = oCmd.Execute
Do Until oRs.EOF
Response.Write oRs.Fields("FROMITEMNO") & oRs.Fields("FROMSERIESNO") & oRs.Fields("QTY") & oRs.Fields("ITEMNUMBER") & oRs.Fields("DESCRIPTION") & "<br>"
oRs.MoveNext
loop
%>
</code>
Så funkar det som fan.. ;) Helt perfekt..
Gör jag exakt samma konstruktion på frågan i min sql sträng i "comobjektet" så funkar det inte....... just nu... fattar jag nada!!!! ;)Sv: Ambigious Column Name
<code>
sql = "SELECT ESTOCKFRSER.FROMSERIESNO, ESTOCKFRSER.FROMITEMNO, ESTOCKFRSER.QTY, ESTOCKFRSER.ROWNUMBER, EPURCHTRANS.ITEMNUMBER, EPURCHTRANS.DESCRIPTION FROM ESTOCKFRSER CROSS JOIN EPURCHTRANS WHERE ESTOCKFRSER.DATASET = 'TCC' AND EPURCHTRANS.DATASET = 'TCC' AND EPURCHTRANS.PRODNUMBER = '" & prodnumber & "' AND ESTOCKFRSER.ProdNumber = '" & prodnumber & "' AND ESTOCKFRSER.ToSeriesNo = '" & toseriesno & "' AND ESTOCKFRSER.ToItemNo = '" & toitemno & "' ORDER BY ESTOCKFRSER.FromItemNo"
</code>Sv: Ambigious Column Name
Sv: Ambigious Column Name
Applikationen är gjord av en konsultfirma som inte har riktigt alla hästarna hemma.. Sitter och gör om deras kod och optimerar. Och dom har inte en enda sp, alla sqlsträngar är opspecificerade (SELECT *) osv.
Men jag har löst det genom att skapa en ny funktion som då givetvis anropar en sp... ;)
Fick ett tips om att man kan använda Profiler för att "fånga" upp sql frågan så kan man se fel om där är något... Stämmer det?Sv: Ambigious Column Name