Jag för söker skapa en asmx-fil där jag bl.a. vill kolla om sql-satsen returnerar några poster. Hej, Hrmmm.... Jag vet inte om det är detta du är ute efter, jag lägger in det i alla fall. Nja... Miakel. Jag kan bara konstatera att denna site är bland det bästa som finns på internet. Mikael. Jag håller helt med Johans tidigare inlägg angående att precisera sina frågor för att de som svarar ska ska slippa skriva hela uppsatser samt att få bättre och mer relevanta svar. Jag trodde att jag var ganska precis i min fråga (-or). Om du kör mot SQL-server ska du istället för OLEDB-klasserna använda SQL-klasserna. Dessa ligger i: Jodå, jag fick just detta att fungera. Mikael. PelleSoft har en liten bugg (anser jag). Hrmmm... Underlättar om du säger vad det är som inte fungerar. Testa att byta ut SELECT mot VALUES ? XAdjo... Jag får larmet 'ogiltigt proceduranrop eller argument'.ASP.NET, Webservice, ASMX-filer, Recordset ??
Jag får det inte att fungera.
<code>
Dim Connection As SQLConnection
Dim Command2 As SqlDataAdapter
Dim SQLcmd2 AS String
Dim DS AS DataSet
'Dim Rs as ADODB.Recordset
'Dim Rs as Recordset
Connection = New SqlConnection("server=111.222.333.444;uid=userid;pwd=passordet;database=databasen")
DS = New Dataset("test1")
SQLcmd2 ="SELECT ES_InMailSpec as column1 from EXTSYS where ES_ExtSysID='" & authentication.username & "'"
Command2 = New SqlDataAdapter(SQLcmd2, Connection)
Command2.Fill(DS, "testds")
</code>
Så långt allt OK
Nu vill jag kolla om några poster hämtades/fanns.
I asp skapade man ett recordset, och kollade BOF.
Men det verkar inte gå att göra i asp.net.
<code>
If DS.Bof then
.........
End If
</code>
Hur gör man i .net?
När använder man dataset resp recordset (om man nu kan ha recordset i .net).
Hur gör man sedan för att hämta ut datat (om .BOF=true)?
I asp var det param1=("rs!kolumn1")
/ MikaelSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Recordset är ett objekt som inte används i .NET alls (om man nu inte kör med COM-Interop av någon dum anledning).
Istället finns andra metoder och objekt att jobba med. Det finns gott om guider i ämnet på nätet. Några är:
http://www.devcity.net/net/article.aspx?alias=start_ado_net
http://msdn.microsoft.com/msdnmag/issues/04/06/datapoints/default.aspx
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaccessingdatawithaspnet.asp
http://www.able-consulting.com/dotnet/adonet/adonet_faq.htmSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Säger mig inte (direkt) hur det ska gå till.
Kan jag få exempel på de olika delarna.
1: Ställa en fråga mot en tabell där jag sedan beroende på om det finns poster eller inte, kan göra något (if-sats på svaret om det finns poster eller inte).
2: Läsa data från ett fält i en tabell baserat på en sqlfråga.
3: Lägga till poster till en tabell.
4: Editera data på en post (baserat på sql-fråga)
/ MikaelSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
<code>
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim intID As Integer
Dim conServiceDet As OleDbConnection
Dim strSelect, strServiceDet As String
Dim cmdSelect As OleDbCommand
Dim dtrServiceDet As OleDbDataReader
intID = Int32.Parse(Request.QueryString("id"))
strServiceDet = ConfigurationSettings.AppSettings("ConnString")
conServiceDet = New OleDbConnection(strServiceDet)
strSelect = "Select * From ServiceDetails Where ServiceId=@id"
cmdSelect = New OleDbCommand(strSelect, conServiceDet)
cmdSelect.Parameters.Add("@id", intID)
conServiceDet.Open()
dtrServiceDet = cmdSelect.ExecuteReader
If dtrServiceDet.Read Then
'Skriv koden som ska utföras om det finns poster...
Else
'Skriv koden som ska utföras om det inte finns poster...
End If
</code>
Det som du väl är intresserad av är väl om det finns poster? Finns det poster så läser ju OleDBDatareadern och första Ifsatsen uppfyller villkoret.Sv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Koden ska användas i en asp.net-skrivet asmx-fil (webservices).
Men jag antar att det du angav är på rätt spår.
Någon annan som har exempel?
/ MikaelSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Vi svarar gärna på frågor ang tekniska problem eller arkitektuella ideér om säkerhet och hjälper till med ev lösa buggar då någon sitter fast. Men att skriva en uppsats, en artikel eller bygga ett program åt folk som ber om det går tyvärr bort. Jag anser att detta forum inte är en instruktionsbok för nybörjare utan en plats där nybörjare kan be om hjälp kring problem i mindre skala.
Din senaste post är komplex, det skall till mycket för att lösa dina punkter.
Det du frågar om kan du finna i flertal artiklar du kan få svar på vissa av dina frågor genom att kolla efter gamla poster i forumet etc. Dock är mitt tips till dig att du köper dig en bok om .Net med ADO .Net och ASP .Net för nybörjare om du tycker pro serier är får svåra. Det kommer ge dig mer hjälp på vägen och skapa större förståelse och bygga upp ditt tanke sätt till en stor possetiv fördel.
En god start för att lite roliga exempel är Quick Starten. När du installerar .Net hittar du under .Net Ramverk i Start/Program, Samples and Quick Start... installera dessa. Gå genom de länkar du finner under ASP .Net så kommer du får svar på många frågor. Är det något specifikt du sedan undrar om så kan du fråga igen. För lite kött på benen tror jag att du behöver, för ett svar från någon av oss som är aktiva här skulle nog leda till fler frågetecken för dig. Eller inte öka din förståelse över hur ramverket fungerar.
.Net är numera OO baserat. Att tänka som du gjorde under ASP tiden fungerar inte, det du gjorde där kan du glömma, ta med dig av de tekniska kunskaper du har över saker man kan göra i högnivå inte lågnivå, glöm vad recordset är och vad EOF betyder. Det existerar inte under .Net. Du får ta till andra lösningar nu än då för att lösa dina problem. Exempelvis så vill du veta om ditt DataSet innehåller poster? Ta och kolla DataSetets APIer finns det nått som kan ge svar på din fråga? Analysera och fundera utifrån sånt du redan vet och känner till. Hur fungerarde egentligen EOF i Recordsets? Hur gör jag något liknande med de APIer som finns nu? Vad är jag ute efter etc...
Recordset finnns inte vad finns istället? DataReader, DataSet vad skilljer dem åt? Hur fungerar de? Vad skriver de om dem etc? Du kommer komma mycket längre om du vet vad de gör än bara hur du gör.
Jag svarar gärna på dina frågor, jag försöker oftast ge svar som förklarar mer än själva problemet (om jag har tid.)
Mvh JohanSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Stor eloge till Pelle.
Jag kan också konstera, att alla tidigare inlägg jag haft, besvarats av flera olika personer som har mycket hög teknisk och pedagogisk kompetens.
Jag anser nog trots allt att detta inlägg / denna förfrågan om kunskap passar väl in i Pellesofts övriga inlägg.
Jag kan inte .Net (därav detta inlägg), men jag skulle bli väldigt förvånad om jag inte kommer att få mina frågor besvarade även denna gång.
Jag tror inte heller att detta inlägg kräver en hel uppsats till svar.
/ MikaelSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Jag syfter på detta:
"1: Ställa en fråga mot en tabell där jag sedan beroende på om det finns poster eller inte, kan göra något (if-sats på svaret om det finns poster eller inte).
2: Läsa data från ett fält i en tabell baserat på en sqlfråga.
3: Lägga till poster till en tabell.
4: Editera data på en post (baserat på sql-fråga) "
Inte din första fråga utan vad du ville ha exempel på.
Ju kortare frågor och detaljerade de är ju fortare får du svar. Och ju bättre svar kan du även få med detaljerad information som ökar dina kunskaper. Ett svar kan alla ge. men utveckling handlar inte om att göra som alla andra säger utan förstå varför man gör det man skall göra.
Det är flera som brukar svara, helt sant, men oftast ca 3-5 personer som regelbundet hjälper till med svar. Bl a. Patrik. Andreas, Jag, Min bror... Vi hjälper gärna till, jag vill bara informera om att man bör begränsa sina frågor för att få ett bra svar. Vi är några som vill hinna med och svara på så många frågro som möjligt och även kunna ge ett svar vi känner oss stålta med som vi vet utvecklar även er som ställer frågorna. Det är därför jag påpekade ditt önskemål ang exempel på något som är rätt stort som man typ inte slänger ihop på 5 minuter som även förklarar varför.
Mvh JohanSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Hur som så skrev jag (för lääänge sen) en väldigt enkel "översikt" till grunderna i ADO.NET. Den skrevs med databasen Access som utgångspunkt. Den bör ge dig en bild av vilka grundläggande alternativ som finns, även om den kanske inte är helt 100, då "mycket vatten har runnit under många broar" sen dess jag skrev den :)
http://www.ezy.nu/fredrik/ADO.NET.rtfSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Jag har nu tagit delar från din 'översikt' (bra översikt).
Vi tar det då ett steg i taget.
Lägga till poster i en SQL-tabell:
<code>
Dim myCn as New System.Data.OleDb.OleDbConnection "PROVIDER=Microsoft.Jet.OLEDB.4.0;server=111.222.333.444;uid=sa;pwd=passordet;database=databas2")
Dim myCmd as New System.Data.OleDb.OleDbCommand("INSERT INTO AO_IN(AO_IN_TEXT) SELECT 'HEJSAN'", myCn)
myCn.Open
myCn.Close
</code>
Dim fungerar utan protester.
Dvs om jag kommenterar bort de två sista raderna, sker inger fel (inget annat heller givetvis).
När jag då aktiverar raden myCn.Open får jag felet 'Could not find installable ISAM'.
Beror detta på att jag tagit ditt exempel som gäller Access, och kör mot SQL-server, eller är det annat fel?
Skall det vara en annan conn-string mot SQL-server?
Övriga 'vanliga' asp-sidor körs med en connstring som pekar på en DNS, kan man göra det även här (hur)?
msjet40.dll finns i system32-mappen.
Webervern fungerar med 'vanlig' asp mot SQL-servern.
/ MikaelSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
System.Data.SQLClient
Alla klasser heter sedan helt enkelt "SQL" istället för "OleDB", dvs "SqlConnection", "SQLCommand" osv.
Connectionsträngen bör också se ut som:
SERVER=XXX.XXX.XX.XX;DATABASE=DB_NAME;User ID=xx;Password=XXXXXXSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Att lägga till poster i en SQL-server blev därmed så här:
<code>
Connection = New SqlConnection("server=111.222.333.444;uid=sa;pwd=passordet;database=database2")
DS = New Dataset("TempDS")
SQLcmd ="INSERT INTO AO_IN(AO_IN_TEXT) SELECT 'Lite txt till db:n'"
Command = New SqlDataAdapter(SQLcmd, Connection)
Command.Fill(DS, "testds")
</code>
Varför måste jag köra DS=..... och Command.Fill......?
Finns det annat sätt att exekvera SQL-Insert-Frågan?
Då tar vi fråga 2:
Hur man jag kolla om en SQL-fråga mot en SQL-databas returnerar några poster?
Jag vill veta om det finns poster som uppfyller frågan.
Frågan innehåller i detta läge inga JOIN, utan går mot EN tabell.
(Blir det annan lösning om det är en fråga med JOIN?)
/ MikaelSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Du kan se DataSet som en tatabas tabel. Den byggs upp som om det vore en Table och du kan köra Joins mellan DataTabels m.m.
Du behöver egentligen inte kolla om datasetet innehåller poster. I ASP behövde man typ göra det för att minimera fel eller utföra något extra om recordsetet var tomt. Jag antar att du inte skall göa något extra om DataSetet är tomt? Utan du vill bara presentera den data du får ut på en ASP .Net sida va?
"Varför måste jag köra DS=..... och Command.Fill......?"
DS = är för att du måste skapa upp ett Dataset.
Command.Fill fyller DataSetet med data utifrån din fråga. Men du gör en Insert då skall du köra något annat. Ex ExecuteNoQuery som sedan ger dig en int med affected rows.
Då skall du inte heller använda DataAdaptern utan SqlCommand med en gång.
<code>
SqlConnection ...... implmentation....
SqlCommand command = new SqlCommand(SQLcmd,Connection);
int affectedRows command.ExecuteNoQuery();
if(affectedRows > 0)
... Du har lagt till data....
</code>
"Finns det annat sätt att exekvera SQL-Insert-Frågan?"
Visade det ovan, vilket är bästa sättet.
Dock kan du med lite mer Automatik uppdatera förändrade DataSets med SqlDataAdaptern.
Exempel:
<code>
public static SqlDataAdapter CreateCustomerAdapter(SqlConnection conn)
{
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd;
SqlParameter parm;
// Create the SelectCommand.
cmd = new SqlCommand("SELECT * FROM Customers " +
"WHERE Country = @Country AND City = @City", conn);
cmd.Parameters.Add("@Country", SqlDbType.NVarChar, 15);
cmd.Parameters.Add("@City", SqlDbType.NVarChar, 15);
da.SelectCommand = cmd;
// Create the UpdateCommand.
cmd = new SqlCommand("UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
"WHERE CustomerID = @oldCustomerID", conn);
cmd.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
cmd.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
parm = cmd.Parameters.Add("@oldCustomerID", SqlDbType.NChar, 5, "CustomerID");
parm.SourceVersion = DataRowVersion.Original;
da.UpdateCommand = cmd;
return da;
}
</code>
Här kan du även hitta lite info:
http://www.asp.net/tutorials/quickstart.aspx
Mvh JohanSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Jag bevakar toppgrenen av denna tråd via epost.
Nu har det skapats en ny 'topptråd', det har sedan inkommit svar på denna nya 'gren'.
Svar på dessa inlägg skickas då inte till mig via epost.
Jag har därför nu missat att du svarat på denna nya gren.
Ska det verkligen vara så?????
Nog om detta.
Anledningen till att jag ville kolla om några poster returnerades, var att det i detta fall var en select-fråga som kollade att headerns user och pwd fanns i min användartabell.
Lösningen blev If DS.Tables(0).Rows.Count>0.
Så detta är löst.
Jag ska inte ha detta på en asp.net-sida.
Det är till en asmx-fil (webservice).
Våra kunder kommer att anropa min asmx-fil, och om user/pwd finns i min användartabell, så kommer taggarna från bodyn att läggas i min sql-server.
Jag kommer nu att testa din lösning med att inte ha DS vid en insert.
Tackar..
/ MikaelSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Nä, det vill inte.
<code>
SQLcmd ="INSERT INTO AO_IN(AO_IN_TEXT, AO_IN_EXTREF, AO_IN_ADRESS) SELECT '" & SweWOX_XML_Message & "','" & ExtRefNr & "','" & ExtAdress & "'"
Command = New SqlCommand(SQLcmd, Connection)
Command.ExecuteNoQuery()
</code>
Vad är fel?
/ MikaelSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Sv: ASP.NET, Webservice, ASMX-filer, Recordset ??
INSERT INTO AO_IN(AO_IN_TEXT, AO_IN_EXTREF, AO_IN_ADRESS) VALUES('" & SweWOX_XML_Message & "','" & ExtRefNr & "','" & ExtAdress & "')"
/JohanSv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Bra, den missade jag när jag kollade hans kod. Finns dock bara en sak som snurrar i mitt huvud nu. Sluta jobbet så jag kan gå ut i solen som långsamt går ner... :-( Borde vara lag på att slippa jobba om det är fint väder :-) Sv: ASP.NET, Webservice, ASMX-filer, Recordset ??
Asmx-filen anropas från Access med Soap 3.0
Larmet kommer inte i returnerat soapmeddelande, utan larmet kommer i koden som anropar asmx-filen.
Om jag istället kör asmx-filen med DS som tidigare, fungerar allt.
Select eller value borde inte spela någon roll.
Det fungerar ju med DS.
Vadå ut och sola?
Finns väl inget roligare än att sitta inne och jobba?
/ Mikael