När jag kör mitt program så får jag följande fel: Om du gör en breakpoint precis innan update och tittar på select-satsen. Är det den du skrev ovan då? Jag får inte ihop frågan i access heller.. :( Kanska kan hjälpa dig med frågan. Hur ser tabellen holecards ut (vilka kolumner och typer) och vad vill du göra? Allt är av typen "text". Din sql-sträng bör se ut som följande: Hmm, är inte riktigt med på hur du menar, pratar du access nu eller sqlfråga i mitt program? Jo precis så skulle den kunna se ut, eller snarare Fnys... när jag döpte om fälten till "players1" istf "1players" så funkade det :/ Inga problem alls. :) Hmm, nu förstod jag ingenting :) Nej, det är därför du ska använda alias i din select-fråga. Jag fick det tillslut att funka :)problem med oledb
"An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll"
Den klagar på följande rad:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DsPoker1.Clear()
OleDbDataAdapter1.Fill(DsPoker1) ' <-- här klagar den...
End Sub
Jag har en oleDbDataAdapter (OleDbDataAdapter1) med standard settings...
SELECT strPlayers FROM holecards WHERE (cards = 'strSql1 strColor')
Sen har jag ett DataSet (DsPoker1) med följande settings:
DataSetName: DsPoker
Jag har en label som jag vill fylla med resultatet med settings:
DataBindnings - Text: DsPoker1 - Table.strPlayers
Vad kan det vara som är fel?
Edit: kan det vara sql-frågan som bråkar??
Sv: problem med oledb
Har du testat att köra den direkt mot databasen (Access?)?
Prova även att köra följande kod:<code>dim ds as new dataset
OleDbDataAdapter1.Fill(ds)</code>Sv:problem med oledb
Fattar nog inte riktigt hur man gör frågor i access tror jag...
ett exempel som rimligtvis borde generera "38.8" :
select players7 from holecards where cards = 'aao'
Men om jag skriver in exakt så i access så får jag upp en dialogruta där jag ska skriva in något...?Sv: problem med oledb
Sv:problem med oledb
-------------------------------------------------
bild: http://www.hyden.nu/poker_tables.gif |
-------------------------------------------------
Vad jag vill göra är att med hjälp av strSql1, strPlayers och strColor välja ut rätt fält.
i min fantasi ser sqlsträngen ut så här:
select strPlayers from holecards where cards = strSql1 & strColor
ex. :
strPlayers = players3
strSql1 = aa
strColor = o
genererar:
select players3 from holecards where cards = aao
vilket i sin tur bör hämta ut "63.9" från databasen...
förstår du hur jag menar?
Om det spelar någon roll så är det vb.net jag jobbar i... och databasen är en access 2003.
/AndersSv: problem med oledb
Om du vill hämta in siffran till ditt dataset som ska ha typen string (om typen på kolumnen 3players) är text/string.
SELECT 3players as [PlayerNumeric] from holecards where cards='aao'
eller
SELECT 2players as [PlayerNumeric] from holecards where cards='aao'
"as [PlayerNumeric]" betyder att kolumnen får ett alias vilket gör att den alltid kommer returneras med detta namn.
Eller kanske om du vill hämta hela raden och sedan hantera den i vb:
<code>SELECT * from holecards where cards='aao'</code>
Det du kanske borde göra är att strukturera din databas så att du har flera tabeller med relationer mellan dem (en playertabell, en färgtabell, en korttabell etc.) och även typa den korrekt (decimalt istället för text för player-kolumnerna t.ex.). Detta för att få en vettigare struktur.
Mvh
PeterSv:problem med oledb
hur blir min sqlfråga i programmet?
strSql1 = "SELECT "& strPlayers & " FROM holecards WHERE cards = " & strSql & strColor
Är det så du menar att jag ska skriva i programmet?Sv: problem med oledb
strSql1 = "select " & strPlayers & " FROM holecards where cards = <b>'</b>" & strSql & strColor & "<b>'</b>"
Alltså med '-tecken runt where-strängen.
Såg att du i texten ovan skrev select players7. I din tabell heter den 7players. Det kan inte vara det som är fel?
Angående det om att dela upp det i flera tabeller så kan du prova att söka på t.ex. rellationsdatabaser i google eller söka i hjälpen i Access. Finns mycket att läsa och lära. :)
Mvh
PeterSv:problem med oledb
Nästan...
Jag får iaf inget fel längre!
Men å andra sidan så får jag inte ut någon text i min textbox, där svaret ifrån sql-frågan borde komma :(
Mitt dataset heter "DsPoker2" och databinding - text på textboxen är:
DsPoker2 - Table.Expr1
Klickfuntionen på knappen ser ut så här:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
OleDbDataAdapter1.SelectCommand.CommandText = strSql1
DsPoker2.Clear()
OleDbDataAdapter1.Fill(DsPoker2)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Men inget skriv ut i textboxen??
Eftersom jag inte får något fel längre så antar jag att sql-strängen är ok, men varför skrivs inget ut i textboxen?
Förövrigt så måste jag verkligen tacka för din hjälp!
Sv: problem med oledb
Bindningen (DsPoker2 - Table.Expr1) är det fältnamn i dataset-tabellen som du vill använda. När du skriver den selectfrågan du skrivit kommer datasetets fältnamn bli DsPoker2 - Holecards.1players. Du måste alltså binda till det fält som du hämta alt. använda alias som jag skrev lite längre upp.
Mvh
PeterSv:problem med oledb
Hur menar du att jag ska skriva?
Ska det stå DsPoker2 - Holecards. & strPlayers alltså?
VS tilllåter mig inte att skriva så...Sv: problem med oledb
SELECT 1players as [playerNumber] from xxx where zz=yy
returnerar en tabell med följande utseende:
playerNumber
---------------
xxx
SELECT 2players as [playerNumber] from xxx where zz=yy
returnerar en tabell med följande utseende:
playerNumber
---------------
xxx
Detta gör att det bundna fältet i ditt formulär skall vara 'playerNumber'. Alltså oavsett vilken kolumn som hämtas från databasen. Du får dock inte uppdateringsmöjlighet då och då försvinner ju nyttan med bindningar.
Jag tror det första du borde göra är att designa om databasen. Splitta upp din flata tabell till flera mindre med relationer mellan sig.
Med vänliga hälsningar
Peter Ilis / som för övrigt inte längre använder bindningar då han anser att det är onödigt krångligt. :DSv:problem med oledb
Sqlfrågan jag använder är:
strSql = "SELECT " & strPlayers & " FROM holecards WHERE cards = '" & strCard & "'"
Och klick-egenskapen för att få det att funka ser ut så här:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If strCard1Value = "" Or strCard2Value = "" Or strSuite = "" Or strPlayers = "" Then
MsgBox("Please make all choises...")
Else
Try
OleDbDataAdapter1.SelectCommand.CommandText = strSql
DataSet1.Clear()
OleDbDataAdapter1.Fill(DataSet1)
lblResult.DataBindings.Clear()
lblResult.DataBindings.Add(New Binding("Text", DataSet1, "holecards." & strPlayers))
Catch ex As Exception
MsgBox(ex.ToString & ", " & ex.Message)
End Try
End If
End Sub
Jag har ingen aning om vad felet var innan, men jag gjorde om all kod (fick det att bli lite snyggare kod oxå) och sen funkade det :D
Tack hur som helst för ditt tålamod :)