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

Nyttja antal tecken..


christian

Rekommendera Poster

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?

 

?

 

Länk till kommentar
Dela på andra webbplatser

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]

Länk till kommentar
Dela på andra webbplatser

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?

 

Länk till kommentar
Dela på andra webbplatser

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 <------------

 

Länk till kommentar
Dela på andra webbplatser

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]

Länk till kommentar
Dela på andra webbplatser

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å..

 

Länk till kommentar
Dela på andra webbplatser

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 <------------

 

Länk till kommentar
Dela på andra webbplatser

Ä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.

 

Länk till kommentar
Dela på andra webbplatser

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..?

 

Länk till kommentar
Dela på andra webbplatser

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...

 

Länk till kommentar
Dela på andra webbplatser

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

 

Länk till kommentar
Dela på andra webbplatser

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 <------------

 

Länk till kommentar
Dela på andra webbplatser

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å.

 

Länk till kommentar
Dela på andra webbplatser

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 <------------

 

Länk till kommentar
Dela på andra webbplatser

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]

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...