Just nu i M3-nätverket
Gå till innehåll
christian

Nyttja antal tecken..

Rekommendera Poster

christian

Jag har en kolumn i databasen som kan innehålla text eller datum.

Finns det ett smidigt sätt utan att ändra i databasen där jag kan skriva ut ett RS bara där det är text och ett där det bara är datum?

 

Tänker att datumet tex ser ut så här i kolumen 2005-08-03

och då vet man att det är 10 tecken.. Det kanske går att nyttja?

 

?

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Que

Det beror på vad din databas har för möjligheter...

 

I t.ex. Oracle kan man använda sig av REGEXP_LIKE för att få ut rader där fält [inte] matchar ett visst mönster, i ditt fall [0-9]+\-[0-9]+\-[0-9]+ eller så...

 

 

 

[inlägget ändrat 2005-08-03 12:35:09 av Que]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
christian

Det är SQL 2000. Tänkte mig närmast om det fanns nån enkel variant i asp-koden?

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Que

Nu är jag inte sådär haj på ASP, men jag tvivlar lite på att det kan hjälpa dig med filtrering av själva hämtningen av data från databasen. Normalt görs det med SQL-uttryck ... kanske ASP har någon abstrahering av det, vad vet jag.

 

Jag är nyfiken...hur bygger du ett RS med ASP?

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cluster

Tycker det verkar vara konstigt modellerat om du i samma kolumn kan ha olika datatyper. Men eftersom jag inte vet varken innehåll eller ändamål så an jag ha helt fel.

En kolumn som normalt innehåller datum hade jag satt som datatyp datum/date. Om det är så att edt i vissa fall inte kommer att anges ett datum (utan istället ett felmeddelande el. dyl.) så har man någon annnan lösning för detta, antingen med vilkor i asp eller en länkad tabell som kopplas till radens id.

 

Det är klart att du kan bygga någon form av workaroud för att lösa detta med tex IsDate(enSträngSomKanskeÄrEttDatum) i såväl asp-koden som direkt i SQL-satsen. Men som sagt, jag skulle nog i första hand se över den logiska uppbyggnaden av din databas.

 

 

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cluster
Jag är nyfiken...hur bygger du ett RS med ASP?

 

[log]

[MÄRK]<%[/MÄRK]
[color="#006400"]'Skapa databaskopplingen[/color]
[color="#0000ff"]Set[/color] conn = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"ADODB.Connection"[/GRÅ])
conn.open [GRÅ]"DRIVER=SQL Server; DATABASE=dbNamn; SERVER=127.0.0.1; UID=myUsername; PWD=myPassword;"[/GRÅ]

[color="#006400"]'Skapa recordset[/color]
[color="#0000ff"]Set[/color] RS=conn.[color="#0000ff"]Execute[/color]([GRÅ]"SELECT id, firstName, lastName, userAlias FROM personer WHERE userAlias='Cluster'"[/GRÅ])

[color="#006400"]' Kolla om SQL-satsen returnerar något[/color]
[color="#0000ff"]If[/color] [color="#0000ff"]Not[/color] RS.EOF [color="#0000ff"]Then[/color]
   [color="#006400"]'Skriv ut hämtad info[/color]
   [b]Response[/b].Write(RS(3)&[GRÅ]" heter egentligen "[/GRÅ]&firstName&[GRÅ]" "[/GRÅ]&lastName)
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

[color="#006400"]'Töm recordset[/color]
[color="#0000ff"]Set[/color] RS=[color="#0000ff"]Nothing[/color]

[color="#006400"]'Stäng och töm databaskopplingsobjektet[/color]
conn.close
[color="#0000ff"]Set[/color] conn=[color="#0000ff"]Nothing[/color]
[MÄRK]%>[/MÄRK]

[/log]

 

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

[inlägget ändrat 2005-08-03 13:34:00 av Cluster]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
christian

Hej Cluster. Du har helt rätt i att modelleringen inte är bra. Problemet är att jag har så många sidor som ropar till kolumen, som ligger där och funkar.. måste ägna massa timmar och bygga om typ 20 sidor på sajten. Ville bara vara lite lat och frisera det i ASP i stället.

Men jag kommer inte på hur jag scriptar fram typ: Är innehållet 10 tecken så gör si annars så..

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cluster

Du kan ju som jag skrev tidigare använda isDate()-funktionen antingen i asp eller sql för att kolla om det är ett datum.

Annars kan du ju använda len() för att ta reda på en strängs längd.

Men vad händer så om det är en 10 tecken lång textsträng, tex "hej på dig", inlagd i databasen?

 

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Anjuna Moon
Är innehållet 10 tecken så gör si annars så..

Det är inget vidare alternativ, tänk om det är en 10-tecken lång textsträng som inte är ett datum då?

 

Använd som Cluster sa IsDate i ASP för att testa strängen.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
christian

Men då borde man kunna kolla typ så här:

Är första tecknet en tvåa + femte tecknet ett bindestreck + att åttonde tecknet är bindestreck, så kan man ju kalla det säkert att innehållet är ett datum.. Men frågan är hur man praktiskt skriver det i ASP..?

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Anjuna Moon
Men då borde man kunna kolla typ så här:

Är första tecknet en tvåa + femte tecknet ett bindestreck + att åttonde tecknet är bindestreck, så kan man ju kalla det säkert att innehållet är ett datum.. Men frågan är hur man praktiskt skriver det i ASP..?

Än en gång ;), IsDate() löser dina problem...

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
christian

Sorry man - inte meningen att dissa din ISdate.. :) Prylen var nog att jag inte riktigt fattar hur man skriver den i ASP..?

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cluster
Prylen var nog att jag inte riktigt fattar hur man skriver den i ASP..?
Det gör inget.

Skriv den direkt i din SQL-sats istället:

[GRÅ]"SELECT kolumn FROM tabell WHERE isDate(kolumn)=1"[/GRÅ]

 

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
christian

Ville bara krånga till det.. På sidan hämtar jag i en html spalt upp kolumnens värden då det existerar sådana i form av datum, i en annan spalt hämtar jag upp samma, fast då när finns innehåll i form av text.. Så ASP varianten tilltalar mig nog ändå.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cluster

Fattar inte riktigt vad du menar men här kan du läsa på lite:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctisdate.asp

 

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Anjuna Moon

För att bara skriva ut datumen

sData=rs([color="#006400"]'DittHybridFält')[/color]
[color="#0000ff"]If[/color] IsDate(sData) [color="#0000ff"]Then[/color]
 [b]Response[/b].Write sData
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

För att bara skriva ut texterna

sData=rs([color="#006400"]'DittHybridFält')[/color]
[color="#0000ff"]If[/color] [color="#0000ff"]Not[/color] IsDate(sData) [color="#0000ff"]Then[/color]
 [b]Response[/b].Write sData
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
christian

Ok - jag hajjar! Tack ska ni ha, fick det att funka. Har också lärt mig en ny sak.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...