Hejsan. Efter som SQL inte vet när ditt fältnamn tar slut så antar den att när ett mellanslag på träffas så är fältnamnet slut. Så du menar att jag explecit måste deklarera alla fältnam istället för att använda *? Tja om du använder * borde det fungera eftersom SQL själv hämtar namnen på fälten och då borde fixa till sådana missar. Du missade att jag använder ett recordset. Det är när jag anropar update metoden på recordset'et felet inträffa. Och endast om jag redigerat ett fält med mellanslag i fältnamnet. Så det är en bugg i providern. Måste det nästan vara, eller? Det är det säkert! Egentligen så är det inte mitt projekt eller mitt problem. Ska mata in en massa data i SQL servern. Kan ju i loopen sammanfoga alla satser till en jätte stor sträng. Med det tar ju tid att skicka och tolka den. Så vilket är det mest effektiva sättet? En INSERT / UPDATE är snabbare än att göra det via recordsetet eftersom du då måste skapa ditt recordset och sedan göra en koppling till en viss tabel och sedan updatera... Tack för din insatts... Men... Jag tänkte precis föreslå det, men du 'hann precis' skriva det själv, allra sist i ditt meddelande. Använd bcp istället, du lär tjäna mycket tid och prestanda på det. Dessutom är det fördelaktigt rent loggmässigt också. Tror det är bulk operationer. Men hur funkar det? OK, nej då är det ganska dödfött ja... :) En textfil enligt nedan typ: oki.. så den kräver någon typ av fil ?? kan inte använda strängar eller arrayer på någont sätt ??? MSDN förklaringarna gillar filer iofs.. Precis, den läser in en fil. I ett sånt här fall (med en stor uppdatering) skulle jag nog lagrat strängen/arrayen eller vad det var i en fil, och sedan kört in den i SQL Server med bcp.Mellanslag i fältnamnet ger fel vid Update ef
Har ett recordset i vilket det förekommer fält med och utan mellanslag.
Om jag lägger till en post i recordset'et och enbart förändrar fält vilket inte innehåller mellanslag fungerar det utan problem. Men om jag modifierar ett felt med mellanslag får jag ett fel vid Update.
I errors collectionen från connection objektet ligger tre fel. De två första saknar beskrivning. Men det tredje säjer något om OLDB Providern och multistep operation...
Uppskattar gärna hjälp... :o)Sv: Mellanslag i fältnamnet ger fel vid Updat
Alltså fungera inte följande:
SELECT Mitt Namn FROM Namn
För att lösa detta problem brukar man skriva _ som mellanslag, nu finns det ett sätt att specifisera vilket som är fältnamnet ändå fast du inte använt _.
SELECT [Mitt Namn] FROM Namn
Fungerar alldeles utmärkt. Det är dock att rekomender att skriva ihop sina fältnamn, inte använda svenska tecken eller använda resarverade ord så som Date, Time osv osv... Även om man kan lösa dessa problem med []
- MagnusSv: Mellanslag i fältnamnet ger fel vid Updat
Det "roliga" är att det fungera med access OLEDB provider. Men inte med SQL Servers. Antagligen en bugg i providern.
Ska testa ditt förslag.Sv: Mellanslag i fältnamnet ger fel vid Updat
Själv kör jag frågor mot databasen med hjälp av * där det finns hemska fält namn som [Line No.] hur man nu kan slänga med en punkt i ett fältnamn... och det fungerar bra.
Fast du skrev att du hade problem med Insert och update och där kan du inte använda * utan måste skriva fältnamnet för hand.
- MagnusSv: Mellanslag i fältnamnet ger fel vid Updat
Sv: Mellanslag i fältnamnet ger fel vid Updat
Varför inte göra en vanlig SQL sats, betydligt snabbare, och så slipper du problemet.
- MagnusSv: Mellanslag i fältnamnet ger fel vid Updat
Sv: Mellanslag i fältnamnet ger fel vid Updat
gör så här:
dim oConn as adodb.connection
set oConn as adodb.connection
oConn.open "DIN_KOPPLING"
sSQL = "INSERT INTO tabell_namn () VALUES()"
oConn.execute sSQL,,128
set oConn = nothingSv: Mellanslag i fältnamnet ger fel vid Updat
Om testar att göra en loop med din kod. Alltså gör en execut med en INSERT och samma sak med ett recordset. Är recordset'et betydligt snabbare. Detta beror på att Execut skickar data till servern och väntar sedan på svar. Kan man lösa detta med att skicka det asynkront, eller slåsamman alla inserts tell en enorm sträng som man sedan skickar med en Execut?
I enstaka insert så är en Insert betydligt snabbare, det vet jag. Men det är mycke data som skall infogas från en loop.
Är inte så insatt i Bulk operationer. Någon som har en god insikt i dem?Sv: Mellanslag i fältnamnet ger fel vid Updat
Sv: Mellanslag i fältnamnet ger fel vid Updat
Tror inte det går i min applikation efter som den också skall var kompatibel med Access...Sv: Mellanslag i fältnamnet ger fel vid Updat
bcp = Bulk Copy Program
bcp används för att importera data i en textfil till SQL Server (eller exportera från SQL Server till en textfil) och är extremt mycket snabbare än att köra en mängd INSERT satser. Det är samma program som används av SQL Server utan att man ser det om man kör en BULK INSERT sats.Sv: Mellanslag i fältnamnet ger fel vid Updat
1;Christoffer;Hedgate;Apptus Technologies
2;Patrik;Löwendahl;Cornerstone
Följande kommando (i prompt alltså) kopierar in hela innehållet i en tabell i databasen:
bcp databasnamn.dbo.tabellnamn in "c:\datafil.txt" -t";" -S"servernamn" -U"användare" -P"lösenord"
I sin enklaste form.Sv: Mellanslag i fältnamnet ger fel vid Updat
Sv: Mellanslag i fältnamnet ger fel vid Updat