none
MS Excel 2007 RRS feed

  • Dotaz

  • Snažím se načíst data do excelu z db mysql. Funguje vše krome sql dotazu s proměnnou. Potřebuji do něj umístit hodnotu z buňky.

    Dotaz vypadá takto (funkční bez proměnné)
    SELECT * FROM `posta-prichozi` WHERE `doruceno` = '09-07-30'

    ale místo WHERE `doruceno` = '09-07-30'
    potřebuji nastavit neco v tomto smyslu:
    WHERE `doruceno` = $L$3

    A to prostě v excelu zadat nejde

    Nezná někdo prosím korektní syntaxi?
    čtvrtek 30. července 2009 11:50

Odpovědi

Všechny reakce

  • 1. pouzij MS query a parametricky dotaz (where Doruceno = [ZadejDatum])
    2. pote slinkuj paramert s L3

    MP

    • Označen jako odpověď Michal Kohout čtvrtek 30. července 2009 13:22
    čtvrtek 30. července 2009 12:31
    Moderátor
  • jo to je super to jsem potřeboval, jen teď když tu hodnotu nastavim ručně tak se select provede OK,
    ale jakmile dam použít následující hodnotu nebo když slinkuju s buňkou tak je select prázdný.

    EDIT: druh buňky nesmí být datum :(
    čtvrtek 30. července 2009 12:55
  • druh bunky by MEL byt datum pokud je pole doruceno datum (pouzivam s MS SQL, mozna je v mysql opravdu po..bane). Ale s tim si asi uz poradis :)
    Posli sem pro kontrolu sqlect z MS Query (prepni na SQL view a copy/paste - parametr se asi zmeni na ? ale to neva.

    Vyreseno?

    MP
    čtvrtek 30. července 2009 13:15
    Moderátor
  • V MySQL je trochu po**baná tabulka (špatné formáty). Je to nastaveno jako varchar.

    Přesně tak, parametr se změnil na ?

    SELECT `posta-prichozi_0`.id, `posta-prichozi_0`.doruceno, `posta-prichozi_0`.odkud, `posta-prichozi_0`.obsah, `posta-prichozi_0`.vyrizeni, `posta-prichozi_0`.vyrizen, `posta-prichozi_0`.poznamka, `posta-prichozi_0`.zapsal
    FROM `posta-prichozi` `posta-prichozi_0`
    WHERE (`posta-prichozi_0`.doruceno=?)
    čtvrtek 30. července 2009 13:21
  • aha, v tom pripade bych udelal pro uzivatelsky vstup pole typ datum, do pole s parametrem pak vzorcem rozparsoval na YY-MM-DD

    =ROK(A1) & "-" & MĚSÍC(A1) & "-" & DEN(A1) pokud staci bez nul

    MP
    čtvrtek 30. července 2009 13:22
    Moderátor
  • mám ještě jeden problém, předělal jsem db do MSSQL aby se lépe mohl používat v síti pro více uživatelů bez nutnosti vytvořené lokálního DSN přístupu k DB.
    Ale narazil jsem na to, že MS Query nejde použít se souborem pro připojení a musím zase použít ono MS Query.

    Když vezmu sql dotaz vytvořen přez MS Query a zadám ho do okna pro sql dotaz tak mi již zmíněný WHERE (`posta-prichozi_0`.doruceno=?) nevezme.
    Parametry jdou asi nastavit jen u sql dotazu přez MS Query.
    pátek 31. července 2009 9:37
  • DSN rozdistribujes jako file DSN nebo pres .reg :)

    Paramatry pokud vim opravdu podporuje jen stare dobre MS Query a/nebo webovy iqy dotaz.

    Pokud delas malicko v asp nebo jinem dynamickem jazyku je .iqy naprosto skvely zpusob jak propojovat data do excelu - nepotrebujes zadny DB driverna stanici ale jen na serveru, vse jede pres http, parametry se predaji v url (http://localserver/report.asp?oddata=xxxxxx&dodata=yyyyy). asp vygeneruje tabulku i s formatovanim, excel si ji sebere.
     
    Zabezpeceni nastavis v IIS. Etc etc. Sama positiva a socialni jistoty

    MP
    pátek 31. července 2009 9:44
    Moderátor
  • Hmm to neumím :). Hold těm 5ti lidem rozdistribuju DSNka :(
    Díky za rady pro mé nezdary :)
    pátek 31. července 2009 10:14
  • Jeste priklad:

    na serveru mam dynamickou stranku http://server/asp/list.aspx?FromCustNo=1&ToCustNo=2 (jak vidis 2 parametry)

    list.aspx:

    <%@ Import Namespace="System.Data.OleDb" %>
    
    <script runat="server">
    
    	sub Page_Load
    
    		dim dbConn, dbComm, dbRead
    
    		dbConn=New OleDbConnection(Application("Connstring"))
    		dbConn.Open
    		dbComm=New OleDbCommand("SELECT SL01001 as Code, SL01002 as Company FROM SL010100 with (NOLOCK) " & "WHERE SL01001 BETWEEN'" & request.querystring("FromCustNo") & "' AND '" & 
    
    request.querystring("ToCustNo") & "' ORDER BY SL01001" ,dbConn)
    		dbRead=dbComm.ExecuteReader()
    		SL010100.DataSource=dbread
    		SL010100.DataBind()
    		dbRead.Close()
    		dbConn.Close()
    	end sub
    
    </script>
    
    <html>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    		<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
    		<META HTTP-EQUIV="EXPIRES" CONTENT="0">
    		<meta HTTP-EQUIV=Refresh CONTENT="60; URL=list.aspx">
    		<title>Customers</title>
    	</head>
    	<body>
    		<form runat="server">
    			<asp:Repeater id="SL010100" runat="server">
    			<HeaderTemplate>
    				<table border="1" >
    					<tr>
    						<th>Code</th>
    						<th>Company</th>
    
    					</tr>
    			</HeaderTemplate>
    			<ItemTemplate>
    					<tr>
    						<td><%#Container.DataItem("Code")%></td>
    						<td><%#Container.DataItem("Company")%></td>
    
    					</tr>
    			</ItemTemplate>
    			<FooterTemplate>
    				</table>
    			</FooterTemplate>
    			</asp:Repeater>
    		</form>
    	</body>
    </html>

    a k nemu patri

    global.asax

    <script language="VB" runat="server">
    	Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    	        Application("Connstring") = "PROVIDER=SQLOLEDB;DATA SOURCE=SERVER;UID=JMENO;PWD=HESLO;DATABASE=DATABASE"
    	End Sub
    </script>
    

    Otevres pak pomoci souboru

    neco.iqy

    WEB
    1
    http://server/asp/list.aspx?FromCustNo=["FromCustNo","Od Kodu Zakaznika"]&ToCustNo=["ToCustNo","Do Kodu Zakaznika"]
    
    
    

    MP

    pátek 31. července 2009 10:20
    Moderátor
  • S datem je podle mne nejlepším řešením převést ho do DOUBLE

    DIM cDate as Double
    cDate = CDbl(Range("$L$3").Value) ' CDbl(Sheet("List1").Range("$L$3").Value)

    DIM SQL_dotaz as String
    SQL_dotaz = "SELECT * FROM [posta-prichozi] WHERE [doruceno] = " & cDate


    VBA VB
    pátek 30. července 2010 7:25