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

Miky

Medlem
  • Antal inlägg

    336
  • Gick med

  • Senaste besök

  • Vunnit antal dagar

    1

Miky vann dagen: 3 juli

Miky hade det mest gillade innehållet!

Om Miky

  • Medlemstitel
    Aktiv
  • Födelsedag 1979-07-14

Kontaktinformation

  • Hemsida
    http://www.festaloss.com

Profil

  • Kön
    Man
  • Ort
    Växjö
  1. Grävde bland mina filer och hittade faktiskt filen... :) TidKoll#2.xlsx
  2. Har problem med att få objRec till rapportens recordset så att den visar det jag vill. Har försökt med kommandon liknande Set Reports("Check_report").Recordset = rstCheck Men får hela tiden ett felmeddelande: Körfel nr '32585'.: Den här funktionen är endast tillgänglig i en ADP.
  3. Mitt mål är att köra en SQL-sats som finns i en procedur på min mySQL från min Access och visa resultatet i en Access-rapport. Har mySQL som en backend och Access som frontend. I mySQL så har jag en tabell där en massa info om körpass lagras. (Proceduren finns längre ner.) Då den innehåller variabler så kunde jag inte lagra den som en View i mySQL. Men Access kan enbart se Tables och Views, inte Procedures. Med macro så har jag lyckats att komma åt så pass att jag kan köra en Procedure. Men hur ska jag kunna komma åt resultatet som den lämnar och presentera detta i en Access-rapport? För att köra en procedur med macro från Access: Dim objRec Dim objConn Dim cmdString Set objRec = CreateObject("ADODB.Recordset") Set objConn = CreateObject("ADODB.Connection") objConn.ConnectionString = "DRIVER={MySQL ODBC 5.3 Unicode Driver}; SERVER=127.0.0.1; DATABASE=db;UID=[user];PASSWORD=[pwd]; OPTION=3" objConn.Open cmdString = "CALL generateKörpassen()" Set objRec = objConn.Execute(cmdString) objConn.Close Min Procedur i mySQL som jag vill köra från Access och presentera resultatet CREATE DEFINER=`root`@`localhost` PROCEDURE `p_korpass`() BEGIN SELECT K.korpass_ID, K.korpass_bilID, K.korpass_lopnummer, K.korpass_datum, K.korpass_arbStart, if(k.korpass_bilID=@lastBilID,Cast((K.korpass_lopnummer - @lastLopnummer) as unsigned integer),0) as check_lopnummer, @lastLopnummer := K.korpass_lopnummer, @lastBilID := CAST(K.korpass_bilID as unsigned integer) FROM db.körpassen K, (select @lastLopnummer := 0, @lastBilID := 0) SQLVars order by K.korpass_bilID,K.korpass_arbStart; END
  4. Har inte heller använt Excel för Mac men lösningen som jag bifogat borde fungera oavsett OS. SkapaVärdeICell.xlsx
  5. Ok.. då kör jag på det alternativet som känns mest smidigast. Kolumn L är en skräpkolumn som jag använde när jag testade lite olika lösningar. Glömde bara ta bort den. De egentliga beräkningarna är i de två gula rutorna. Att få den att skilja på chaufförer lär definitivt inte vara några problem bara att göra precis som du beskriver...
  6. Har nu utifrån idéer och tips jag fått av att läsa dina lösningar lyckats skapa en som fungerar ännu bättre. Har visserligen inte testat att lägga in den i det "skarpa" dokumentet, men de tester jag gjort så verkar den beräkna tiderna korrekt. Det som är kvar nu är att få in så den skiljer på olika chaufförer. Vi får se senare om den slöar ner dokumentet för mycket, men jag vet inte riktigt hur jag ska få in OM-satser som du tipsar om. Rent prestandamässigt, är det någon skillnad på {matrisformler} och Produktsumma-formler? TidKoll#2.xlsx
  7. Ursäkta det tog lite tid, men har nu tittat på den filen du bifogade. Och man har lärt sig flera sätt att skriva olika formler m.m., det tackar jag för... . Din lösning fungerar perfekt... om man inte har för många körpass per dag och chaufför. Alltså den fungerar som den ska om den vilan som chauffören tar är max 2st alternativt de två största viloperioderna är mot slutet. Skulle passen vara såsom nedan listade så blir det fel vila listad. Att köra nedan pass är helt ok enligt vilotidsreglerna men inte enligt den lösningen du presenterade. Datum|Start|Slut|Förare|m.m. 2013-10-01|02:00|03:00|1|... Vila: 24:00 och 00:00 Skulle vara: 24:00 och 00:00 2013-10-01|04:00|05:00|1|... Vila: 01:00 och 22:00 Skulle vara: 01:00 och 22:00 2013-10-01|06:00|10:00|1|... Vila: 01:00 och 01:00 Skulle vara: 22:00 och 01:00 2013-10-01|11:00|14:00|1|... Vila: 01:00 och 01:00 Skulle vara: 22:00 och 01:00 /Mikael
  8. Absolut ska du vara "den". Borde jag ju tänkt på... Har fixat ett exempelark med en massa kommentarer så att den snabbt går att förstå. Tabellen längst ned är som jag vill ha det med resultaten. vilotider.xlsx
  9. 1. Jag har valt att fokusera på när passen slutar och titta 24 timmar tidigare 2. Som jag skrev så har jag lyckats räkna ut hur många timmar totalt som är arbetat respektive vila. 3. Det är att göra de kontrollerna som jag har problem med. T.ex. så kan ju den sammanlagda vilan vara 13 timmar. Är den uppdelad på 9 timmar och 4 timmar så är det ju ok (mer än 8 timmars vila). MEN, är den uppdelad på 7 timmar och 6 timmar så är det ju inte OK. Detta vill jag på något sätt kunna få fram. Men vet inte hur jag ska lösa detta. För beräkningarna så utgår jag ifrån att all annan tid är vila.
  10. Har ett problem jag inte lyckas lösa i mitt excelprogram. Jag har en lista med flera körpass som mina chaufförer har kört. Datum|Start|Slut|Förare|m.m. 2013-10-01|04:03|13:00|1|... 2013-10-02|05:35|15:02|1|... 2013-10-03|01:03|10:34|1|... 2013-10-04|19:09|05:45|1|... Det jag vill få fram är ifall chauffören har hållt sig till sina vilotider. Och då även med hur mycket som vilotiden eventuellt har brutits med. Vilotiderna som ska hållas är enligt lag: 3§ Föraren ska ha haft en dygnsvila på minst elva timmar under den tjugofyratimmarsperiod som föregår varje tidpunkt då föraren utför transporter. Dygnsvilan får delas upp i två perioder varav den ena skall vara minst åtta timmar. Jag har lyckats med att räkna ut hur länge som föraren har arbetat den senaste 24-timmarsperioden, med hjälp av formlerna från //eforum.idg.se/topic/221104-arbetstimmar-l%C3%B6n-och-ob-till%C3%A4gg/, och iom detta även kunna räkna ut hur många timmar som chauffören har vilat under denna period. MEN, som ni läste i lagparagrafen ovan så kan man dela upp sin vila i två perioder där den ena skall vara minst 8 timmar. Här börjar mina svårigheter, jag måste ju på något sätt kunna kolla de två längsta viloperioderna den senaste 24-timmarsperioden för att se att de är tillräckligt långa. Hur ska jag lyckas med detta? /Mikael
  11. Rent spontant när det gäller raster så skulle jag räkna ut OB1 och OB2 (med ovan formler) för respektive rast och dra ifrån detta från de totala OB1 och OB2 tiderna. Men proffsen ovan har säkerligen en snittsigare lösning...
  12. Anledningen till att jag har cla_textValue_String är att jag vill kunna sätta fler värden i anslutning till just denna variabel. Alltså värden som t.ex. anger hur just denna sträng senare ska skrivas ut. Samt även kod för att hjälpa till med felhantering. Man kan ju visserligen göra en function som man anropar när man ska föra in och ut informationen, men det kändes i min värld som enklare att lägga in den så att det sköttes automatiskt. Sen kan jag även tillägga att jag hade tänkt ha inmatningskontrollen i just chauffor.personnummer property. Det var därför som jag upptäckte ovan detalj.
  13. Själv skulle jag börja med att kontakta webhotellet där du har din hemsida. Detta då din hemsida ändrats utan att du gjort något, samt att du inte längre kan ansluta för att föra ut en uppdatering av din hemsida. Det låter ju som att de har fått något problem på sin server.
  14. Miky

    Class som typ

    Har programmerat i VS2008 ett tag nu och snubblat över en, enligt mig, konstig detalj. Jag har ett upplägg som följer i mitt program (Förenklad för att enklare kunna visa): Public Class cla_textValue_String ''Kod för att lagra, analyzera värdet m.m. End Class Public Class chauffor Property personnummer() As cla_textValue_String Get Return _personnummer End Get Private Set(ByVal value As cla_textValue_String) ''Kod där jag kontrollerar värdet som förs in _personnummer = value End Set End Property End Class Men det är när jag anropar denna property som jag stöter på något intressant: Public Class Main Dim chaf As New databaseChauffor(txtBox_Personnummer.Text) 'Ex: 1 'Går direkt till cla_textValue_String. chaf.personnummer.value = txtBox_Personnummer.Text 'Ex: 2 'Genererar ett fel: "'Set' acessor of property 'personnummer' is not accessible." chaf.personnummer = New cla_textValue_String(txtBox_Personnummer.Text) End Class Exempel 1 I ovan exempel 1 så hade jag förväntat mig att den först skulle gå genom chauffor.personnummer property för att sedan genom den gå vidare till cla_textValue_String. Vilket då betyder att jag inte har någon större anledning till att sätta en "Private Set". Exempel 2 När jag sedan testar med exempel 2 ovan så noterar jag att mitt "Private Set" faktiskt fungerar. Den tillåter mig inte att ändra personnumret. Dock så börjar man undra, går den då och ändrar värdet genom "Get"? (Och ja, den ändrar värdet. Har kollat detta) Har även haft "Property personnummer" satt till Readonly med samma resultat som ovan. Någon som vet hur det kommer sig att den beter sig på detta sätt? Det som jag skulle vilja är att kunna lägga upp det hela på detta sätt: Public Class chauffor Property personnummer() As cla_textValue_String <------ Notera typ Get Return _personnummer End Get Private Set(ByVal value As String) <------ Notera typ ''Kod där jag kontrollerar värdet som förs in _personnummer.value = value End Set End Property End Class Som ni ser så vill jag bara kunna ge den ett värde, men samtidigt kunna plocka hem all info som cla_textValue_String har att erbjuda. Fast ovan exempel ger ju tyvärr ett error. Så jag var tvungen att lösa det på nedan sätt: Public Class chauffor ReadOnly Property personnummer() As cla_textValue_String Get Return _personnummer End Get End Property WriteOnly Property setPersonnummer() As String Set(ByVal value As String) _personnummer = New cla_textValue_String(value) End Set End Property End Class Någon som har en idé om hur man kan lösa det hela på ett bättre sätt? Eller är min lösning det bästa man kan göra? Jag kan dock fortfarande från Class Main ändra värdet direkt genom att skriva: chaf.personnummer.value = txtBox_Personnummer.Text
  15. Jag löste det själv... Jag klistrar in hela classen som jag har skrivit... Imports System.IO Public Class wallpaperManager Public Enum style Stretched Centered Tiled End Enum Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As String, ByVal fuWinIni As Long) As Long Private Const SPI_SETDESKWALLPAPER = 20 Private _style As style Private _filename As String Public Sub New() MyBase.New() _style = style.Stretched End Sub Property selectedStyle() As style Get Return _style End Get Set(ByVal value As style) _style = value End Set End Property Property filename() As String Get Return _filename End Get Set(ByVal value As String) If Not File.Exists(value) Then Throw New Exception("File does not exist!") _filename = value End Set End Property Public Sub changeWallpaper() Dim key = My.Computer.Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True) Dim lngSuccess As Long Dim strBitmapImage As String If Not File.Exists(_filename) Then Throw New Exception("File does not exist!") Try Select Case _style Case style.Stretched key.SetValue("WallpaperStyle", "2") key.SetValue("TileWallpaper", "0") Case style.Centered key.SetValue("WallpaperStyle", "1") key.SetValue("TileWallpaper", "0") Case style.Tiled key.SetValue("WallpaperStyle", "1") key.SetValue("TileWallpaper", "1") End Select strBitmapImage = _filename lngSuccess = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, strBitmapImage, 0) Catch ex As Exception Throw New Exception("Could not change wallpaper!") End Try End Sub End Class
×
×
  • Skapa nytt...