Avatar billede kiara Nybegynder
16. februar 2010 - 11:16 Der er 14 kommentarer og
1 løsning

Linieskift i almindelig tekst i SQL

Hej.

Jeg vil starte med at sige at jeg er total blank på SQL. Jeg forstår de mest almindelige kommandoer og synes derudover det er helt vildt spændende og noget jeg skal lære MEGET mere af :-)

Men i første omgang er jeg på min arbejdsplads fået serveret en opgave som går ud på nogenlunde følgende:

Vi har et sagsstyringssystem som henter tekst og data fra en SQL database. Hvis jeg skal rette, tilføje eller ændre noget tekst bruger jeg ms sql server management studio. Jeg skal nu tilføje noget tekst i en.... ja jeg ved ikke en gang hvad det hedder, men i et af de felter der står NULL hvis feltet ikke viser noget... Nå men her skal jeg tilføje noget tekst med et linieskift, ex følgende:

SQL is short for Structured Query Language and is a widely used database language, providing means of data manipulation (store, retrieve, update, delete) and database creation.

Almost all modern Relational Database blah blah blah

Men hvordan får jeg linieskiftet med og vist i vores sagsstyrring?

Det er tilladt at grine af min uvidenhed, bare jeg også får lidt hjælp :-)

Mvh Kiara
Avatar billede kiara Nybegynder
16. februar 2010 - 11:52 #1
Det skal måske lige nævnes at der et andet sted i tabellen er et felt hvor der, når data trækkes, er linieskift. Dette er i tabellen vist med fire firkanter, som ikke kan copy-pastes
16. februar 2010 - 12:00 #2
Paa mit system virker det ved simpelt hen at insaette teksten med linieskift.  For eksempel:

CREATE TABLE kiara(tekst VARCHAR(256);
INSERT INTO kiara VALUES("Der kom
en soldat

gaaende hen ad landevejen")

bliver vist saaledes naar jeg siger SELECT * FROM kiara:

Der kom
en soldat

gaaende hen ad landevejen
Avatar billede kiara Nybegynder
16. februar 2010 - 14:24 #3
Ok, men problemet hos mig er at det er et rent tekstfelt i tabellen(dbo.tabelnavnet). Jeg har et andet felt hvor der også kun er tekst og så er der nogle firkanter der hvor der er linieskift når data bliver trukket til vores sagsstyrring
16. februar 2010 - 15:06 #4
Ikke helt forstaaet:  I dit foerste spoergsmaal forstod jeg at opgaven gik ud paa at indfoere NYE tekster i et tekstfelt i en mssql tabel paa en saadan maade at du, naar du traekker teksten ud igen, faar linieskift paa bestemte steder.  Naar du foereer de nye tekster ind (med INSERT eller UPDATE statement), proev saa at anbringe linieskift direkte, med enter tasten som ganske almindelig wordprocessing.  Hvis du proever det, hvordan ser teksten saa ud naar du traekker teksterne ud igen?  Jeg er spaendt paa svaret.  Teksterne skulle gerne have linieskift der hvor du anbragte dem.  Det har de i det mindste paa mit system som jeg demonstrerede ovenfor.

Siger du saa i #1 og #3 at der i et andet felt er eksisterende tekster hvor linieskift er lavet paa en saadan maade at ud over linieskiftet ogsaa bliver printet nogle firkanter?  Det ville jeg da mene er en ulempe, ikke noget du boer straebe efter at efterligne naar du saetter nye tekster ind.
Avatar billede kiara Nybegynder
16. februar 2010 - 15:29 #5
Ok, jeg er sikkert ikke så god til at forklare, da jeg ikke er helt med på hvad de forskellige ting hedder, så jeg kan godt forstå hvis du er forvirret. Jeg prøver igen :-)

Jeg har en tabel med kolonner og rækker. Tabellen hedder dbo.bbt, kolonnerne hedder henholdsvis ID, korttext (her står ex. salær, erstatning eller uddybning) og langtext (her er der så en lang smøre som hæfter sig til det valgte ord i korttext, ved ex salær står Salæret er beregnet på det foreliggende grundlag......).

Jeg har så et sagssystem som i dette tilfælde bruger dbo.bbt til følgende: Der er en drop down hvor man kan vælge mellem de forskellige ord der står i dbo.bbt korttext. Vælger du salær kommer der i et felt nedenunder hele smøren som man har skrevet i langtext (Salæret er beregnet på det foreliggende grundlag....)

Sådan hænger de to ting sammen, håber det var til at forstå. Mit problem er så at jeg i sagssystemet gerne vil have en meget lang text med linieskift frem. Jeg har i dbo.bbt kaldt den Diverse og i langtext har jeg så skrevet de tre-fire afsnit som der skal vises når jeg i sagssystemet vælger Diverse. Men jeg kan i dbo.bbt ikke lave linieskift og i sagssystemet står det hele ud i en lang køre.

Var det til at forstå nu? Det håber jeg  :-)
16. februar 2010 - 16:25 #6
Siden spoergsmaalet er oprettet under kategorien mssql gaar jeg ud fra at dbo.btt er en mssql tabel.  Jeg kan saa forstaa at dbo.btt har (mindst) fire felter, id, korttekst, langtekst, og diverse.  Du har saa en applikation der traekker kortteksterne ud og placerer dem i en dropdown og som naar der vaelges et emne i dropdownen traekker applikationen den tilsvarende langtekst ud, og den vil du gerne have vist med linieskift.  Saa langt er det let at forstaa.

Men siger du saa at teksten i dbo.btt.langtekst staar i en lang smoere og at du i dbo.btt.diverse paa en eller anden maade forsoeger at angive hvor langteksten skal lave linieskift?  Det jeg saa ikke forstaar er hvorfor du skriver langteksten som en lang smoere i stedet for at anbringe linieskiftene hvor du vil have dem og saa dropper dbo.btt.diverse.  Hvis du vil se denne tekst:
"Salaer:

Beregnes som a + b.
Derfra traekkes c."

Saa i stedet for at indfoere denne tekst i dbo.btt.langtekst:  "Salaer: Beregnes som a + b.  Derfra traekkes c."

hvorfor saa ikke skrive:
"Salaer: [enter][enter] Beregnes som a + b. [enter] Derfra traekkes c." ?
Avatar billede kiara Nybegynder
17. februar 2010 - 09:33 #7
Der er ikke noget felt der hedder diverse. Det er en tekst i det felt der hedder korttext, så glem alt om diverse.

Hvis jeg under feltet korttext har "Salær" og hertil hører så feltet langtext  "Beregnes som a + b. Derfra trækkes c". Dette vil jeg gerne have som følger i applikation:

I drop down vælges Salær og herunder i en tekstboks trækkes fra feltet langtekst

Beregnes som a + b.

Derfra trækkes c.

Hvis jeg i dbo.bbt trykker enter efter + b. sker der ikke andet end at curseren rykker til næste række i samme felt.
17. februar 2010 - 21:35 #8
Maaske er det mine nerver der er paa hoejkant efter en lang og vanskelig dag paa arbejde med mange drillerier, men jeg synes i dit sidste indlaeg at kunne spore en vis irritation.  Hvis det er saaledes saa lad os stoppe her og nu, for saa ville det da vaere komplet meningsloest at forsaette.

Men hvis jeg, hvad jeg haaber, hoerer forkert saa kik paa det foelgende:

(1) diverse - misforstaaelse.  Du sagde i #3 at "Jeg har et andet felt hvor der også kun er tekst og så er der nogle firkanter der hvor der er linieskift ..." og i #1 "der et andet sted i tabellen er et felt hvor der, når data trækkes, er linieskift. Dette er i tabellen vist med fire firkanter ...".  Med ordet "felt" er det min vanetaenkning at taenke paa en kolonne i en tabel saasom du har tre felter/kolonner i dbo.btt, id, korttekst, og langtekst.  Jeg konkluderede derfor, aabenbart forkert, fra #1 og #3 at der var et fjerde felt/kolonne og at det var den du i #5 kaldte diverse.  Hvad jeg nu tror du siger er det foelgende:

(a) MSSQL tabellen har tre kolonner, id, korttekst, og langtekst.  Hver af tabellens raekker (records) har en korttekst, for eksempel "Salaer" og en tilsvarende langtekst for eksempel "Salæret er beregnet på det foreliggende grundlag.....". 

(b) Da du tog opgaven over bestod tabellen allerede og havde, blandt andet, en raekke med korttekst "Diverse" og en langtekst der bestaar af tre-fire paragraffer.  Den der havde indsat denne langtekst havde aabenbart proevet at lave linieskift.  Jeg har saa ikke forstaaet om du, naar du traekker denne langtekst ud, rent faktisk faar linieskiftene plus et antal firkanter eller om linieskiftet fejler og du kun faar firkanterne. 

(c)  Din opgave er nu, for det foerste, at indsaette korttekster og langtekster for nye emner paa en saadan maade at man faar de noedvendige linieskift naar langteksterne traekkes ud og, for det andet, at "reparere" de bestaaende langtekster. 

Er jeg ved at vaere paa sporet?

(2)  Saa sagde du i #5 "jeg kan i dbo.bbt ikke lave linieskift.."  I #7 forklarer du: "Hvis jeg i dbo.bbt trykker enter efter + b. sker der ikke andet end at curseren rykker til næste række i samme felt."  Det lyder for mig som om du ikke arbejder direkte i mssql og indsaetter data ved at formulere sql statements saasom "INSERT INTO dbo.btt(langtekst) VALUES ('Dette er en langtekst ....' ") men at du arbejder i et program hvor du foerer teksten ind i tekstbokse og saa klikker paa en "submit" knap hvorefter programmet sender teksten til mssql.  Tekstboksene i saadanne programmer er ofte programmeret til at gaa videre til naeste tekstbox efter tryk paa enter tasten, men man kan lave linieskift ved at trykke paa CTR + enter.  Har du proevet hvad der sker ved at trykke paa CTR + enter?  Det ku' da vaere at det virkede.

Hvilket program bruger du?  Hvilket programmeringssprog er det skrevet i?
Avatar billede kiara Nybegynder
19. februar 2010 - 13:17 #9
Jeg er på ingen måde irriteret, jeg er mægtig ked af det hvis du læser det sådan :-)

For så vidt angår din forståelse af mit (helt sikkert meget rodet forklaret) problem:

(a) Korrekt

(b) Korrekt og ja jeg får et linieskift når jeg trækker det ud, men uden firkanter. Det er i langtekst at der, der hvor der i udtrækket er linieskift, er fire firkanter.

(c) Jeps det er min opgave.

(2) I dette tilfælde laver jeg ikke statements. Her indtaster jeg kun den data der bliver trukket. Jeg arbejder i Microsoft SQL server management. Jeg har prøvet med CTRL + enter, shift + enter, alt + enter, shift + CTRL +  enter, you name it, altid det samme resultat som når jeg blot trykker enter.

Har snakket med en som har en perifær tilknytning hertil som måske tror det har noget med SQL-serveren eller Citrix (som vi bruger) at gøre.

Jeg vil nødigt tage alt for meget af din tid, så hvis du ikke gider bruge mere tid på denne problemstilling jeg har er det helt fint :-) Ind til videre har jeg som nødløsning sat bindestreger ind i stedet for linieskift og så må dem der skal bruge det, bare slette og selv trykke enter. Ikke at det er så fedt, men det er under alle omstændigheder bedre end selv at skulle huske fire lange og tunge afsnit med paragraffer og andet knald
19. februar 2010 - 20:08 #10
Hjemme igen (har man i Danmark hoert om en togulykke i Belgien (hvor jeg bor) i mandags hvor to toge kolliderede?  Det skete precist paa hoved-nord-syd linien hvor jeg bor og arbejder paa hver side af ulykkesstedet (og hvor jeg passerede det en times tid foer ulykken.)  Togtrafikken er stadig stort set afbrudt og det giver lange og besvaerlige dage.  Jeg haaber de snart faar ryddet op.)

Med hensyn til spoergsmaalet saa kommer jeg nok ikke videre.  Et linieskift er en ASCII character ligesom a og 5, og jeg er overbevist om at hvis du foerst kan faa din tekst, inklusiv linieskift "bogstaverne" ind i dine SQL tabeller, for eksempel ved hjaelp af sql-statements rundt om Citrix applikationen saa traekker du ogsaa teksten ud igen med de rigtige linieskift.  Jeg kan ikke gennemskue hvad der blokkerer det for dig.  Held og lykke med at finde svar fra anden side.
Avatar billede kiara Nybegynder
22. februar 2010 - 09:31 #11
Ja man har hørt om de to toge der kolliderede, puha, godt man ikke sad i et af de tog.

Jeg forsøger at omgå Citrix og ser om det hjælper. Men du skal have mange gange tak for forsøget på at finde en løsning og jeg håber de snart har fået ryddet op på skinnerne :-)
22. februar 2010 - 16:50 #12
Nu vi snakker om oprydning, gider du lukke dette spoergsmaal som vel nu ikke laengere er aktivt, og derved hjaelpe med at rydde ud i de spoergsmaal der staar som aabne i min liste af indlaeg.
Avatar billede kiara Nybegynder
24. februar 2010 - 11:46 #13
Det kan du tro jeg vil, but how? Har tidligere forsøgt at rydde op i mine egen spørgsmål uden held og gik ud fra man ikke kunne (til stor irritation for min, til tider overdrevne - ordenssans)
24. februar 2010 - 13:46 #14
Jamen det er ogsaa lidt krikket og u-intuitiv.  Man lukker et spoergsmaal ved at acceptere et svar.  Hvis man ikke har modtaget noget svar, eller et ingen acceptabel svar, paa sit spoergsmaal opretter man selv et svar (for eksempel bare et indlaeg der siger "Jeg lukker" med tik i "Svar") og accepterer det.

Det "staar skrevet" i FAQ hvorfra jeg citerer:

"Hvordan lukker man sit spørgsmål?

Et spørgsmål er lukket når der er lagt et svar, som er blevet accepteret af vedkommende som oprettede spørgsmålet. Hvis du har et spørgsmål hvor ingen af svarene kunne bruges, kan du selv lægge et svar og acceptere dette.

Husk at hvis du selv fandt en løsning, så skriv den endelig som svar da andre kan have glæde af den i fremtiden! Samtidig viser du de brugere, som har brugt tid på dit spørgsmål, at du selv fandt en mere velegnet løsning."
Avatar billede kiara Nybegynder
24. februar 2010 - 14:29 #15
Takker :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester