Arbetar på en 3-skiktad lösning där jag har en SQL-Server (2000) som backend. Affärslogiken ligger i komponenter i COM+ (skrivna i VB6) medan presentationslagret består (för tillfället) av VB6. Det finns ett konstigt problem vad gäller SQL-server och asp tillsammans med nText. Jag har nämligen för mig att om man skriver en selectsats så måste nText fälten ligga sist eller först - inte mitt i sql-koden. Det löste sig genom att placera ntext fältet sist i SQL-sattsen. Det löste även en andra problem jag haft med andra fältvärden i resultatet (notera att detta inte var i ASP utan i VB6/COM+). Håkan, har du provat selecta en rad med mer än 4000 tecken i NTEXT fältet? Jag antar att det inte fungerar... Kanske t o m inte ens så många. Du bör inte använda BLOB-fält som vanliga fält i ett recordset, utan du bör läsa över dem till ett Stream-objekt. Sedan kan du skapa din XML från det. Måste säga att Stream är ett ADO objekt jag inte stött på tidigare. Du skriver: OK, jag skrev nog inte riktigt vad jag menade. Visst ska du läsa ut fältet som ett vanligt fält i ett Recordset, men sedan ska du inte behandla det som ett vanligt fält, utan där ska du läsa över informationen till ett Stream-objekt. Se länken nedan för mer info om detta. Tack för dina svar, ska genast sätta igång och använda Stream objektet för att hantera BLOB-fältet. ok Du deklarerar en fixed-length String på följande vis:ntext fält i SQL-Server
I databasen har jag en tabell med ett fält av typen ntext som klarar av att hantera upp till 1 GB information. I en av mina lagrade procedurer plockar jag bl.a. ut det här fältet för att returnera resultatet till affärslogiken. Där omvandlar jag resultatet till ett XML-dokument som sedan skickas till presentationslagret. Men i presentationslagret Saknas informationen från ntext fältet helt.
Om jag fattat det rätt så lagrar SQL-Server informationen i ett ntext fält som Unicode. Jag provade att konvertera resultatet till ASCII i affärslagret med funktionen StrConv men resultatet är fortfarande tomt. Om jag kollar fältets AbsoluteSize egenskap (ADO 2.5) så får jag -1 till svar.
Hur ska man göra för att kunna läsa av resultatet från ett ntext fält så att jag kan returnera en (eller ev. flera) strängar?
// Håkan WennerbergSv: ntext fält i SQL-Server
select ntext1,ntext2, filnamn from..
eller
select filnamn, ntext1, ntext2 from ..
Jag kommer attan inte ihåg hur det är, antingen skall det ligga först eller sist i sql-strängen - prova och se om det inte ger resultat...
/PelleSv: ntext fält i SQL-Server
Tack!
// Håkan WennerbergSv: ntext fält i SQL-Server
Sv: ntext fält i SQL-Server
"Du bör inte använda BLOB-fält som vanliga fält i ett recordset, utan du bör läsa över dem till ett Stream-objekt"
Om jag inte ska ha fältet i ett Recordset, var ska jag då ha det... Som en fil? (vill kunna utnyttja fulltextsökningen i SQL Server 2000 sedan)
Det jag egentligen vill ha är ett fält i databasen där jag kan lagra ca 300.000 bytes gärna i ASCII. Denna information vill jag sedan plocka ut med ADO i mina komponenter som ska omformatera detta fält tillsammans med ytteligare en bunt fält till ett XML-dokument som jag sedan skickar till presentationslagret.
Funderar också lite på hur jag ska lyckas returnera 300.000 bytes med data från komponenten när VB's String endast hanterar ~65.000 bytes. Presentationslagret som ska ta emot denna information kommer att vara i ASP men för tillfället är det skrivet i VB6. Kan man kanske returnera ett Stream objekt?
(tipsa gärna om länkar till information om Stream objektet om det är nån som har någon bra)
// Håkan WennerbergSv: ntext fält i SQL-Server
Angående ditt valav ntext istället för text så finns det ingen anledning att välja ntext om du inte behöver Unicode. ntext gör som sagt att informationen blir dubbelt så stor som om den lagras i text.
Angående VBs String, är du säker på det? Jag hade ganska bestämt för mig att den kunde ta mer, men jag är inte 100%.
http://support.microsoft.com/support/kb/articles/Q258/0/38.aspSv: ntext fält i SQL-Server
Ang. String datatypen så finns det två typer av upptäckte jag till min förvåning.
<!-- Saxat ur MSDN -->
There are two kinds of strings: variable-length and fixed-length strings.
A variable-length string can contain up to approximately 2 billion (2^31) characters.
A fixed-length string can contain 1 to approximately 64K (2^16) characters. Sv: ntext fält i SQL-Server
hur skapar man en fixed-length string då? för jag antar att Dim foo As String ger en variable length string.Sv: ntext fält i SQL-Server
String * size
Alltså:
Dim strFixed As String * 50